动态更改字段Django管理内联表格
我想动态地将CharField更改为ChoiceField,因为我希望从当前请求确定的可能性列表中选择值。动态更改字段Django管理内联表格
在我的ModelAdmin能做到这一点与get_form(),只是说:
form.base_fields[field_name] = forms.ChoiceField(...)
,但我该怎么做同样的InlineModelAdmin(TabularInline)? 我带台阶的贯通get_formset()和get_fieldsets(有点),但无法找到正确的位置在挂钩
有一个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)
你可以给一个窗体类的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
表单不是静态更改的,这是在运行时确定的。 InlineModelAdmin中不调用get_form()。 – 2012-07-31 07:35:57
使窗体属性。但是你已经找到了解决方案。 – Willian 2012-07-31 09:49:46
谢谢! “formset = inline.get_formset(request,obj)”后跟“form = formset.form”,然后我就可以像在ModelAdmin中那样继续。 – 2012-07-31 09:27:45
在django代码中看到的警告:“ModelAdmin.get_formsets()已被弃用,并且将在Django 1.9中被移除。使用ModelAdmin.get_formsets_with_inlines()而不是” – OriolJ 2015-09-16 09:22:59
“要清楚,get_formsets将是内联类的一种方法,对吧?出于某种原因,get_formsets在这里不会被调用= / – Anoyz 2016-02-22 16:05:39