2

我有一个关于 django 的 ForeignKey 参考问题的问题。

这是我的代码的一部分:

应用票务交易者

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)
    ...

应用题字

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 管理员中的“添加 Ticket Trader”界面时,我收到一条错误消息:

用户匹配查询不存在。

Python27\lib\site-packages\django\db\models\query.py 在获取,第 366 行

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

我想要得到的是:在我的ticketTrader表的“inscription”列中获取我的“Inscription”表的唯一ID(pk)的值。

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

Django 版本:1.4 / Python 版本:2.7.3 / South last 版本

谢谢你的帮助 :)

4

2 回答 2

0

我只能猜测:

TicketsTrader 有一个 Inscription 的外键,它有一个 User 的外键并在其__unicode__()方法中使用该键。

现在,我不知道 Grapelli,但默认的管理应用程序会在 Add TicketsTrader 页面上呈现 Inscription-s 的下拉菜单。如果某些Inscription-s 指向不存在的User-s,那么他们的__unicode__()方法将失败并显示您指定的错误消息。

问题是为什么有些User-s 会丢失而Inscription-s 不会指向它们。好吧,如果您使用例如 MySQL+MyISAM,则不会在此处强制执行外键,因此可能会发生各种奇怪的事情。

于 2012-06-24T23:51:45.797 回答
0

我认为因为您没有任何用户...在创建 Ticket Trader 之前尝试创建用户

于 2012-06-25T01:54:07.877 回答