题
这问题很奇怪,我希望有人能帮助我。为了讨论的方便,我有到Book模型ForeignKey的关系的作者模型。当我展示一个作家,我想有只显示与该作者相关的书籍ChoiceField。因此,我重写AuthorForm。的初始化强>()方法和我基于该过滤基于作者ID书籍查询创建的选择(元组)的列表。该元组是书籍ID的复合和书籍名称(即,(1,“白鲸”))。那些“选择”,然后分配到的ModelForm的选择属性。
当的形式在模板呈现,所述ChoiceField正确显示,只列出那些与该作者相关联的书籍。
这是事情变得怪异。
当我保存表单,我收到一个ValueError(不能分配“U'' ‘:Author.book’必须是一个Book实例)此错误是有道理的,由于FK关系但是,如果我加入。 “打印”语句的代码,使得没有其他变化,然后保存记录,它的工作原理。该ValueError异常神奇地消失了。我已经试过这样的次数,以确保我没有无意中做出的另一个变化,它的工作原理各一次。
有谁知道这是怎么回事?
解决方案
不太清楚你在做什么错,但最好是只修改查询集:
class ClientForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.affiliate = kwargs.pop('affiliate')
super(ClientForm, self).__init__(*args, **kwargs)
self.fields["referral"].queryset = Referral.objects.filter(affiliate = self.affiliate)
class Meta:
model = Client
以上是直出一个我的项目和它完美的作品,只显示相关的传递子公司的推荐对象:
form = ClientForm(affiliate=request.affiliate)
不隶属于 StackOverflow