【发布时间】:2010-10-24 18:23:03
【问题描述】:
我有一个名为Answer 的模型,它与另一个名为Question 的模型有ForeignKey 关系。这意味着问题自然可以有多个答案。
class Question(models.Model):
kind = models.CharField(max_length=1, choices=_SURVEY_QUESTION_KINDS)
text = models.CharField(max_length=256)
class Answer(models.Model):
user = models.ForeignKey(User, related_name='answerers')
question = models.ForeignKey(Question)
choices = models.ManyToManyField(Choice, null=True, blank=True) # <-- !
text = models.CharField(max_length=_SURVEY_CHARFIELD_SIZE, blank=True)
现在我正在尝试创建一个Answer 实例,然后将M2M 关系设置为Choice,但在接触M2M 之前出现以下错误:'Answer' instance needs to have a primary key value before a many-to-many relationship can be used.
ans = Answer(user=self._request.user,
question=self._question[k],
text=v)
ans.save() # [1]
当我注释掉 [1] 时,问题当然消失了,但我不明白为什么它首先出现,因为正如你所看到的,我在全部!
编辑:名称choices 似乎也没有问题。我尝试将它的每次出现都更改为options,但遇到了同样的问题。
【问题讨论】:
-
恐怕这不会对我产生任何错误(你说得对,它不应该)。您的 Choice 模型是什么样的?任何自定义初始化、元类或继承?模块中您定义模型或实例化 Answer 的任何全局/局部变量都可能与选项或选项发生冲突(尽管我从您的编辑中注意到您可能已经想到了这一点)。跨度>
-
或者自定义 save() 方法,也许,在您的 Answer 模型中?
-
这对我来说实际上是个好消息,它对其他人有用。我会继续调查。
-
(不,我没有自定义的 save() 方法。)
标签: django django-models many-to-many