这个问题很奇怪,我希望有人能帮助我。为了论证,我有一个 Author 模型,它与 Book 模型有 ForeignKey 关系。当我显示作者时,我希望有一个仅显示与该作者关联的书籍的 ChoiceField。因此,我重写了 AuthorForm。init () 方法,然后我根据一个查询创建一个选择列表(元组),该查询根据作者 ID 过滤书籍。元组是书 ID 和书名的组合(即 (1, 'Moby Dick'))。然后将这些“选择”分配给 ModelForm 的选择属性。
当表单在模板中呈现时,ChoiceField 会正确显示,仅列出与该作者关联的书籍。
这就是事情变得奇怪的地方。
当我保存表单时,我收到一个 ValueError (Cannot assign "u'1'":Author.book" must be a Book instance)。由于 FK 关系,这个错误是有道理的。但是,如果我添加一个“print”声明代码,不做其他更改,然后保存记录,它可以工作。 ValueError 神奇地消失了。我已经尝试了很多次,确保我没有无意中进行另一个更改,并且每次都有效。
有谁知道这里发生了什么?