【问题标题】:Select a subset of foreign key elements in inlineformset_factory in Django在 Django 的 inlineformset_factory 中选择外键元素的子集
【发布时间】:2011-05-28 15:28:01
【问题描述】:

我有一个带有两个外键的模型:

class Model1(models.Model):
  model_a = models.ForeignKey(ModelA)
  model_b = models.ForeignKey(ModelB)
  value = models.IntegerField()

然后,我创建一个内联表单集类,如下所示:

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 示例。有什么建议吗?

【问题讨论】:

  • 刚刚添加了一个通用的django 标签,以便为不关注非常具体标签的人突出显示。

标签: django django-models django-forms django-views django-queryset


【解决方案1】:

你需要做的是change the ModelChoiceField's queryset

最简单的方法可能是对表单集的表单进行猴子补丁。您应该能够在构建表单集后立即执行此操作:

an_inline_formset.form.base_fields['model_b'].queryset = ModelB.objects.filter(whatever=True)

不是最漂亮的,但应该可以。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2021-09-03
    相关资源
    最近更新 更多