Django管理员形成额外的字段

时间:2018-04-18 00:43:04

标签: django-forms django-admin

我想添加一个不在模型中的额外字段(列)。因此,我创建了一个模型表单,其中定义了新的额外字段。

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”

我做错了什么?

3 个答案:

答案 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"}