【发布时间】:2011-01-01 19:14:46
【问题描述】:
是否可以为我的管理站点中的所有模型配置除 (:) 之外的“label_suffix”?
【问题讨论】:
标签: django django-admin django-forms
是否可以为我的管理站点中的所有模型配置除 (:) 之外的“label_suffix”?
【问题讨论】:
标签: django django-admin django-forms
您可以创建django.contrib.admin.ModelAdmin 类的子类,将ModelAdmin.form 的label_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)
【讨论】:
django.forms.Form 具有属性 label_suffix 但是查看 Django 的源代码我看到 ModelForm 是从其他东西扩展而来的。最重要的是,我看不到从ModelForm 获取Form 对象的方法。老实说,我有点坚持。
label_suffix 不适用于 Django Admin 模型表单,因为后缀 ':' 已固定在代码中(请参阅django/contrib/admin/helpers.py)。
【讨论】: