没有标签的 ModelForm 的额外字段,不会在 InlineModelAdmin 中呈现
Extra field of ModelForm without label, does not render in InlineModelAdmin
要在管理 add
页面中添加一个额外的字段,以下代码将起作用:
models.py:
class Parent(models.Model):
pass
class Child(models.Model):
parent = models.ForeignKey(Parent, on_delete=models.PROTECT)
forms.py:
class ChildForm(forms.ModelForm):
extra_field = forms.CharField()
class Meta:
model = Child
fields = '__all__'
admin.py:
@admin.register(models.Child)
class ChildAdmin(admin.ModelAdmin):
form = forms.ChildForm
当 Child
是 Parent
Parent
add
中的内联时, 如何添加相同的额外字段页数?
以下admin.py:
class ChildInline(admin.TabularInline):
model = models.Child
form = forms.ChildForm
@admin.register(models.Parent)
class ParentAdmin(admin.ModelAdmin):
inlines = (ChildInline,)
结果:
Traceback (most recent call last):
File "django/db/models/options.py", line 617, in get_field
return self.fields_map[field_name]
KeyError: 'extra_field'
...
django.core.exceptions.FieldDoesNotExist: Child has no field named 'extra_field'
...
AttributeError: Unable to lookup 'extra_field' on Child or ChildInline
根据 ,添加标签将使内联按预期工作:
class ChildForm(forms.ModelForm):
extra_field = forms.CharField(label='Extra Field')
class Meta:
model = Child
fields = '__all__'
要在管理 add
页面中添加一个额外的字段,以下代码将起作用:
models.py:
class Parent(models.Model):
pass
class Child(models.Model):
parent = models.ForeignKey(Parent, on_delete=models.PROTECT)
forms.py:
class ChildForm(forms.ModelForm):
extra_field = forms.CharField()
class Meta:
model = Child
fields = '__all__'
admin.py:
@admin.register(models.Child)
class ChildAdmin(admin.ModelAdmin):
form = forms.ChildForm
当 Child
是 Parent
Parent
add
中的内联时, 如何添加相同的额外字段页数?
以下admin.py:
class ChildInline(admin.TabularInline):
model = models.Child
form = forms.ChildForm
@admin.register(models.Parent)
class ParentAdmin(admin.ModelAdmin):
inlines = (ChildInline,)
结果:
Traceback (most recent call last):
File "django/db/models/options.py", line 617, in get_field
return self.fields_map[field_name]
KeyError: 'extra_field'
...
django.core.exceptions.FieldDoesNotExist: Child has no field named 'extra_field'
...
AttributeError: Unable to lookup 'extra_field' on Child or ChildInline
根据
class ChildForm(forms.ModelForm):
extra_field = forms.CharField(label='Extra Field')
class Meta:
model = Child
fields = '__all__'