我对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管理员中的“添加票证交易者”界面时,出现一条错误消息:
用户匹配查询不存在。
获取行366中的Python27 \ lib \ site-packages \ django \ db \ models \ query.py
在模板\ grappelli \ templates \ admin \ includes \ fieldset.html中,错误
在第19行
我想要得到的是:在ticketTrader表的“ inscription”列中,获取“ Inscription”表的唯一ID(pk)的值。
或“ inscriptionKey”的值,但我认为这是不可能的。
Django版本:1.4 / Python版本:2.7.3 /南最后一个版本
谢谢你的帮助 :)
最佳答案
我只能猜测:
TicketsTrader有一个用于Inscription的外键,它具有一个到User的外键,并在其__unicode__()
方法中使用了该键。
现在,我不知道Grapelli,但是默认的管理应用程序将在“添加票证交易者”页面上为Inscription-s下拉列表。如果某些Inscription
-s指向不存在的User
-s,则其__unicode__()
方法将失败,并显示您指定的错误消息。
问题是一些User
-怎么会丢失,而Inscription
-却没有指向它们。好吧,如果您使用例如MySQL + MyISAM,没有在其中强制使用外键,因此会发生各种奇怪的事情。
关于python - Django错误与ForeignKey引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11181171/