我想添加一个不在模型中的额外字段(列)。因此,我创建了一个模型表单,其中定义了新的额外字段。
admin.py
class WorkingHourForm(forms.ModelForm):
extra_field = forms.CharField(max_length=100)
class Meta:
model = WorkingHour
fields = ['day', 'period', 'time_range', 'extra_field']
class WorkingHourInline(admin.TabularInline):
model = WorkingHour
form = WorkingHourForm
这应该有效,因为它几乎是documentation中示例的副本。 但是,这会引发错误:无法在WORKHour或WorkingHourInline上查找“extra_field”
我做错了什么?
答案 0 :(得分:1)
class WorkingHourForm(forms.ModelForm):
extra_field = forms.CharField(label='extra_field', max_length=100)
class Meta:
model = WorkingHour
fields = ['day', 'period', 'time_range', 'extra_field']
class WorkingHourInline(admin.TabularInline):
model = WorkingHour
form = WorkingHourForm
添加label ='extra_field'在tabularinline的类似用法中为我解决了此问题。我认为django admin示例按原样工作,但与admin.TabularInline结合使用时,效果不佳。希望有帮助。
答案 1 :(得分:0)
从fields = ['day', 'period', 'time_range', 'extra_field']
删除extra_field
。如果您愿意,django会尝试从模型中获取class WorkingHourForm(forms.ModelForm):
extra_field = forms.CharField(max_length=100)
class Meta:
model = WorkingHour
fields = ['day', 'period', 'time_range']
class WorkingHourInline(admin.TabularInline):
model = WorkingHour
form = WorkingHourForm
的值。所以,它会引起错误。
修改后,上面的代码看起来像
{{1}}
答案 2 :(得分:0)
尝试将其添加到表单的Meta中:
labels = {"extra_field": "blah"}