【问题标题】:Add `help_text` to Django Admin field将 `help_text` 添加到 Django 管理字段
【发布时间】:2018-01-14 01:46:22
【问题描述】:

我试图在管理面板上编辑用户时显示图像,但我不知道如何添加帮助文本。

我正在使用这个Django Admin Show Image from Imagefield 代码,效果很好。

但是short_description 属性仅命名图像,help_text 似乎没有在其下方添加文本。

如何像普通模型字段一样将help_text 添加到此字段?

编辑:

我想在图像上添加help_text,就像此屏幕截图中的密码字段一样:

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    如果您不想更改模型,请使用自定义表单:

    from django import forms
    
    class MyForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super(MyForm, self).__init__(*args, **kwargs)
            self.fields['image'].help_text = 'My help text'
    
        class Meta:
            model = MyModel
            exclude = ()
    
    @admin.register(MyModel)
    class MyModelAdmin(admin.ModelAdmin):
        form = MyForm
        # ...
    

    【讨论】:

    • 这似乎并没有添加帮助文本。我错过了什么吗?
    • MyModel 中的字段是否包含 help_text 参数,如下所示:image = models.ImageField(<...>, help_text='My help text')
    • 我目前只是从模型中提取 url,我想避免向其中添加任何其他内容。
    【解决方案2】:

    我花了一段时间才弄清楚。如果您仅在 admin.py 中定义了自定义字段,并且该字段不在您的模型中。使用自定义 ModelForm:

    class SomeModelForm(forms.ModelForm):
        # You don't need to define a custom form field or setup __init__()
    
        class Meta:
            model = SomeModel
            help_texts = {'avatar': 'User's avatar Image'}
    

    在 admin.py 中:

    class SomeModelAdmin(admin.ModelAdmin):
        form = SomeModelForm
        # ...
    

    【讨论】:

      【解决方案3】:

      如果您不想创建自定义模型表单类:

      class MyModelAdmin(admin.ModelAdmin):
          def get_form(self, request, obj=None, change=False, **kwargs):
              form = super().get_form(request, obj=obj, change=change, **kwargs)
              form.base_fields["image"].help_text = "Some help text..."
              return form
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        相关资源
        最近更新 更多