我想要有关于一个字段值的其他字段.因此,我构建了一个自定义管理表单来添加一些新字段.
与jacobian 1的博客相关,这是我想出的:
class ProductAdminForm(forms.ModelForm):
class Meta:
model = Product
def __init__(self, *args, **kwargs):
super(ProductAdminForm, self).__init__(*args, **kwargs)
self.fields['foo'] = forms.IntegerField(label="foo")
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)
但附加字段'foo'不会显示在管理员中.如果我添加这样的字段,一切正常,但不如所需的动态,添加关于模型的另一个字段的值的字段
class ProductAdminForm(forms.ModelForm):
foo = forms.IntegerField(label="foo")
class Meta:
model = Product
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)
那么有什么初始化方法我必须再次触发以使新字段工作?或者还有其他尝试吗?
我想动态地将 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()但找不到合适的位置。