首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有ForeignKey引用的Django错误

带有ForeignKey引用的Django错误
EN

Stack Overflow用户
提问于 2012-06-24 21:03:13
回答 2查看 2K关注 0票数 2

我有一个关于django的ForeignKey引用问题的问题。

这是我代码的一部分:

App ticketsTrader

代码语言:javascript
复制
class TicketsTrader(models.Model):
    seller = models.ForeignKey(User, related_name='ticketsTrader_seller')
    buyer = models.ForeignKey(User, related_name='ticketsTrader_buyer')
    inscription = models.ForeignKey(Inscription)
    transactionCode = models.CharField(max_length=30,blank=False,null=False)
    ...

App铭文

代码语言:javascript
复制
class Event(models.Model):
    title = models.CharField(max_length=75)
    description = models.TextField()
    ...

class Inscription(models.Model):
    event = models.ForeignKey(Event)
    packs = models.ManyToManyField(PackChoise)
    user = models.ForeignKey(User)
    ...

    def __unicode__(self):
        return self.event.__unicode__() + u': ' + self.user.__unicode__()

    def inscriptionKey(self):
        return str(self.pk) + '_' + str(self.valkey)

但是,当我试图访问我的Grapelli管理中的“添加票证交易者”界面时,我会收到一条错误消息:

不存在

用户匹配查询。

Python27\lib\site-packages\django\db\models\query.py in get,第366行

在模板\grappelli\templates\admin\includes\fieldset.html,错误中的第19行

我想得到的是:在我的ticketTrader表的“铭文”列中,得到我的“铭文”表的唯一id (pk)的值。

或者"inscriptionKey“的价值,但我认为这是不可能的。

Django版本:1.4/ Python版本: 2.7.3 / South最后版本

(谢谢你的帮助:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-24 23:51:45

我只能猜测:

TicketsTrader有一个用于登录的外键,它对用户有一个外键,并在其__unicode__()方法中使用该密钥。

现在,我不知道Grapelli,但默认的管理应用程序将呈现一个下拉列表在Add TicketsTrader页面上。如果某些Inscription-s指向不存在的User-s,则它们的__unicode__()方法将失败,从而导致您指定的错误消息失败。

问题是,为什么会有一些User-s失踪,而Inscription-s却指向他们呢?嗯,如果你使用例如MySQL+MyISAM,外键不会在那里被强制执行,所以所有奇怪的事情都会发生。

票数 0
EN

Stack Overflow用户

发布于 2012-06-25 01:54:07

我想因为你没有任何使用者..。在创建票证交易者之前尝试创建用户

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11181171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档