我有一个关于django的ForeignKey引用问题的问题。
这是我代码的一部分:
App ticketsTrader
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铭文
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最后版本
(谢谢你的帮助:)
发布于 2012-06-24 23:51:45
我只能猜测:
TicketsTrader有一个用于登录的外键,它对用户有一个外键,并在其__unicode__()方法中使用该密钥。
现在,我不知道Grapelli,但默认的管理应用程序将呈现一个下拉列表在Add TicketsTrader页面上。如果某些Inscription-s指向不存在的User-s,则它们的__unicode__()方法将失败,从而导致您指定的错误消息失败。
问题是,为什么会有一些User-s失踪,而Inscription-s却指向他们呢?嗯,如果你使用例如MySQL+MyISAM,外键不会在那里被强制执行,所以所有奇怪的事情都会发生。
发布于 2012-06-25 01:54:07
我想因为你没有任何使用者..。在创建票证交易者之前尝试创建用户
https://stackoverflow.com/questions/11181171
复制相似问题