我有一个带有两个外键的模型:
class Model1(models.Model):
model_a = models.ForeignKey(ModelA)
model_b = models.ForeignKey(ModelB)
value = models.IntegerField()
然后,我创建一个内联formset类,如下所示:
an_inline_formset = inlineformset_factory(ModelA, Model1, fk_name="model_a")
然后实例化它,就像这样:
a_formset = an_inline_formset(request.POST, instance=model_A_object)
一旦此模板集在模板/页面中呈现,就会有与model_b字段关联的ChoiceField。我遇到的问题是结果下拉菜单中的元素包括ModelB表中的所有元素。我需要根据ModelB中的某些条件选择其中一部分。同时,我需要在实例化inlineformset_factory时保留对model_A_object实例的引用,因此,我不能只使用this示例。有什么建议吗?
答案 0 :(得分:2)
您需要做的是change the ModelChoiceField's queryset
最简单的方法可能是修补formset的形式。您可以在使用以下命令构建formset后立即执行此操作:
an_inline_formset.form.base_fields['model_b'].queryset = ModelB.objects.filter(whatever=True)
不是最漂亮的,但应该有效。