动态更改Django admin内联表单的字段

zdwk9cvp  于 2023-10-21  发布在  Go
关注(0)|答案(2)|浏览(117)

我想动态地将CharField更改为ChoiceField,因为我想从当前请求确定的可能性列表中选择值。
ModelAdmin中,我可以用get_form()来做,然后说:

form.base_fields[field_name] = forms.ChoiceField(...)

但是我怎么能对InlineModelAdmin(TabularInline)做同样的事情呢?我在get_formset()get_fieldsets()中走了一点,但找不到合适的位置。

n3ipq98p

n3ipq98p1#

有一个get_formsets方法可以像get_form一样用于内联。这是django.contrib.admin.options.ModelAdmin的默认版本:

def get_formsets(self, request, obj=None):
    for inline in self.inline_instances:
        yield inline.get_formset(request, obj)
gg0vcinb

gg0vcinb2#

您可以给予一个表单类给InlineModelAdmin:
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-options
或者对于动态的东西,你可以覆盖get_form方法:
https://github.com/django/django/blob/master/django/contrib/admin/options.py#L431

相关问题