例如,我有一个 IntegerField
,我想更改它在整个 Django 管理中的显示方式。
我考虑过对其进行子类化并覆盖 __str__
和 __unicode__
方法,但它无法正常工作。
class Duration(models.IntegerField):
def __unicode__(self):
return "x" + str(datetime.timedelta(0, self))
def __str__(self):
return "y" + str(datetime.timedelta(0, self))
更新:我只想更改字段显示的方式,而不是编辑控件(小部件)。
最佳答案
我不确定您想对该字段做什么,但是如果您想更改显示的 HTML,您需要更改表单字段正在使用的小部件,或者创建您自己的自定义小部件:
https://docs.djangoproject.com/en/dev/ref/forms/widgets/
模型.py
class LovelyModel(models.Model):
my_int = models.IntegerField()
表单.py
from widgets import WhateverWidgetIWant
class LovelyModelForm(forms.ModelForm):
my_int = models.IntegerField(widget=WhateverWidgetIWant())
class Meta:
model = LovelyModel
admin.py
from forms import LovelyModelForm
class LovelyModelAdmin(admin.ModelAdmin):
form = LovelyModelForm
你想做什么?
关于django - 如何更改 Django 管理中特定字段类型的呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286319/