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

Dan*_*air 5 python django admin

我想动态地将 a 更改CharField为 a ChoiceField,因为我希望从当前请求确定的可能性列表中选择该值。

在 a 中,ModelAdmin我可以用 做到这一点get_form(),只需说:

form.base_fields[field_name] = forms.ChoiceField(...)
Run Code Online (Sandbox Code Playgroud)

但我怎样才能对 an 做同样的事情InlineModelAdmin (TabularInline)呢?我走了一会儿get_formset()get_fieldsets()但找不到合适的位置。

Chr*_*att 4

有一种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)
Run Code Online (Sandbox Code Playgroud)

  • django 代码中出现警告:“ModelAdmin.get_formsets() 已弃用,并将在 Django 1.9 中删除。请改用 ModelAdmin.get_formsets_with_inlines()” (2认同)