【问题标题】:How do you add a non-editable field to a custom admin form in Django如何将不可编辑字段添加到 Django 中的自定义管理表单
【发布时间】:2018-01-23 18:59:34
【问题描述】:

我正在尝试将 editable=False 字段添加到自定义管理表单,但出现错误:

django.core.exceptions.FieldError: 'help_num' cannot be specified for 
Investigation model form as it is a non-editable field

这是真的,在我的模型中我是这样设置的:

models.py

help_num = models.CharField(max_length=17, unique=True, default=increment_helpdesk_number, editable=False)

forms.py

class HelpDeskModelForm(forms.ModelForm):

    class Meta:
      model = HelpDesk
      fields = [
          "help_num",
          "help_types",
           ...
          "help_summary"
          ]

admin.py

class HelpDeskModelAdmin(admin.ModelAdmin):
    readonly_fields=('help_num',)
    form = HelpDeskModelForm

我将readonly 添加到 admin.py,但仍然收到错误消息。我做错了什么?

【问题讨论】:

    标签: python django django-models django-forms django-views


    【解决方案1】:

    您需要从类表单字段列表中删除不可编辑的字段:

    class HelpDeskModelForm(forms.ModelForm):
    
        class Meta:
          model = HelpDesk
          fields = [
              #"help_num",
              "help_types",
               ...
              "help_summary"
              ]
    

    并像您一样在 ModelAdmin 中保留只读字段:

    class HelpDeskModelAdmin(admin.ModelAdmin):
        readonly_fields=('help_num',)
        form = HelpDeskModelForm
    

    【讨论】:

    • 我可以发誓我试过了。也许我在尝试时打错了。谢谢。现在标记答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2015-02-25
    • 2011-12-29
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多