这问题很奇怪,我希望有人能帮助我。为了讨论的方便,我有到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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top