【问题标题】:Django - Admin - Applying 'label_suffix' for ModelsDjango - 管理员 - 为模型应用“label_suffix”
【发布时间】:2011-01-01 19:14:46
【问题描述】:

是否可以为我的管理站点中的所有模型配置除 (:) 之外的“label_suffix”?

【问题讨论】:

    标签: django django-admin django-forms


    【解决方案1】:

    您可以创建django.contrib.admin.ModelAdmin 类的子类,将ModelAdmin.formlabel_suffix 设置为一个字符串。这样任何使用 ModelAdmin 的模型都将具有相同的前缀:

    # myproject/myapp/admin.py
    
    from django.contrib import admin
    from myproject.myapp.models import MyModel, AnotherModel, YetAnotherModel, \
                                       SomeSpecialModel
    
    class PrefixAdmin(admin.ModelAdmin):
        def __init__(self, *args, **kwargs):
            super(PrefixAdmin, self).__init__(*args, **kwargs)
            self.form.label_suffix = 'some suffix here'
    
    # Use this ModelAdmin class for all your models:
    
    admin.site.register(MyModel, PrefixAdmin)
    admin.site.register(AnotherModel, PrefixAdmin)
    admin.site.register(YetAnotherModel, PrefixAdmin)
    
    # Or if you need a specific ModelAdmin for a particular Model
    # just extend from the PrefxiAdmin class:
    
    class SpecialModelAdmin(PrefixAdmin):
        # ...
    
    admin.site.register(SomeSpecialModel, SpecialModelAdmin)
    

    【讨论】:

    • 这似乎没有效果。除了这里提到的代码之外,我还遗漏了什么吗?尝试打印时收到以下错误。 “类型对象'ModelForm'没有属性'label_suffix'”
    • 我可以验证 django.forms.Form 具有属性 label_suffix 但是查看 Django 的源代码我看到 ModelForm 是从其他东西扩展而来的。最重要的是,我看不到从ModelForm 获取Form 对象的方法。老实说,我有点坚持。
    • 1.6 中向后不兼容的更改; BoundField.label_tag 现在包含表单的 label_suffix docs.djangoproject.com/en/1.6/releases/1.6/…
    【解决方案2】:

    label_suffix 不适用于 Django Admin 模型表单,因为后缀 ':' 已固定在代码中(请参阅django/contrib/admin/helpers.py)。

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 2010-12-05
      • 2011-01-26
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2014-05-21
      相关资源
      最近更新 更多