我有多個管理站點,因此不同的用戶可以獲得編輯數據庫中對象的不同體驗。每個管理站點都有一組不同的對象公開,並有不同的樣式。所有這些都可以通過覆蓋模板和ModelAdmin對象來完成。如何覆蓋django的管理界面中的help_text
我無法解決如何通過不同的網站提供不同的help_text。 help_text總是直接從模型字段定義中獲取,並且似乎沒有辦法覆蓋它。
我錯過了什麼,或者這是不可能的?
我有多個管理站點,因此不同的用戶可以獲得編輯數據庫中對象的不同體驗。每個管理站點都有一組不同的對象公開,並有不同的樣式。所有這些都可以通過覆蓋模板和ModelAdmin對象來完成。如何覆蓋django的管理界面中的help_text
我無法解決如何通過不同的網站提供不同的help_text。 help_text總是直接從模型字段定義中獲取,並且似乎沒有辦法覆蓋它。
我錯過了什麼,或者這是不可能的?
您可以隨時更改表單字段上的ModelAdmin構造屬性,是這樣的:
def __init__(self, *args, **kwargs): super(ClassName, self).__init__(*args, **kwargs) if siteA: help_text = "foo" else: help_text = "bar" self.form.fields["field_name"].help_text = help_text
試試這個(可能需要使用self.form.fields更換self.fields ...)
class PropertyForm(models.ModelAdmin):
class Meta:
model = Property
def __init__(self, *args, **kwargs):
super(PropertyForm, self).__init__(*args, **kwargs)
for (key, val) in self.fields.iteritems():
self.fields[key].help_text = 'what_u_want'
Cerin是對的,但他的代碼不能很好地工作(至少在Django 1.4中)。
def get_readonly_fields(self, request, obj):
try:
field = [f for f in obj._meta.fields if f.name == 'author']
if len(field) > 0:
field = field[0]
field.help_text = 'some special help text'
except:
pass
return self.readonly_fields
您必須更改「作者」和help_text
字符串以適合您的需求。
您可以創建一個新的模型的形式和覆蓋那裏help_text:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['myfield'].help_text = 'New help text!'
然後使用新的形式在您的ModelAdmin:
class MyModel(admin.ModelAdmin):
...
form = MyForm
這是爲了實現你想要的清潔方式因爲表單域總是屬於表單!
在Django的1.9,類似於下面爲我工作
def get_form(self, request, obj=None, **kwargs):
form = super(MyAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['my_field'].help_text = """
Some helpful text
"""
return form
這是一個非常有用且快速的方法! – ihhcarus 2016-12-27 00:45:40
不,據我所看到的工作 - ModelAdmin.fields只是一個字符串列表:http://docs.djangoproject.com /en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fields – Toby 2011-04-20 16:17:14
糟糕!實際上,字段將通過ModelAdmin的表單屬性提供。另外,確保首先調用父構造函數。請參閱編輯。 – Carlos 2011-04-20 16:49:00
仍然不適用於我: 「type object'ModelForm'has no attribute'fields'」 – Toby 2011-04-26 11:38:41