【问题标题】:Django admin form extra fieldDjango 管理表单额外字段
【发布时间】:2018-04-18 00:43:04
【问题描述】:

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

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 中示例的副本。 但是,这会引发错误:Unable to lookup 'extra_field' on WorkingHour or WorkingHourInline

我做错了什么?

【问题讨论】:

    标签: django-forms django-admin


    【解决方案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 结合使用时,它不会。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      fields = ['day', 'period', 'time_range', 'extra_field'] 中删除extra_field。如果您喜欢,django 将尝试从模型中获取 extra_field 的价值。所以,它会引发一个错误。

      修改后的代码如下

      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
      

      【讨论】:

      • 非常感谢您的意见。但是,同样的错误仍然发生。但是,当我链接到的documentation 中的示例有slug 也不在模型中时,为什么我需要从fields 中删除extra_field
      • 有同样的问题。
      【解决方案3】:

      尝试在表单的 Meta 中添加它:

      labels = {"extra_field": "blah"}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        • 2017-04-02
        • 2022-11-13
        • 2019-04-15
        • 2016-02-13
        • 1970-01-01
        • 2011-11-08
        相关资源
        最近更新 更多