如何在Django admin中更改特定字段类型的呈现?
例如,我有一个如何在Django admin中更改特定字段类型的呈现?,django,django-models,django-admin,Django,Django Models,Django Admin,例如,我有一个IntegerField,我想改变它在Django admin中的显示方式 我考虑过对它进行子类化,并重写\uuuu str\uuuu和\uuuu unicode\uuuu方法,但它不起作用 class Duration(models.IntegerField): def __unicode__(self): return "x" + str(datetime.timedelta(0, self)) def __str__(self):
IntegerField
,我想改变它在Django admin中的显示方式
我考虑过对它进行子类化,并重写\uuuu str\uuuu
和\uuuu unicode\uuuu
方法,但它不起作用
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,您需要更改表单字段正在使用的小部件,或者创建您自己的自定义小部件: 型号.py
class LovelyModel(models.Model):
my_int = models.IntegerField()
from widgets import WhateverWidgetIWant
class LovelyModelForm(forms.ModelForm):
my_int = models.IntegerField(widget=WhateverWidgetIWant())
class Meta:
model = LovelyModel
from forms import LovelyModelForm
class LovelyModelAdmin(admin.ModelAdmin):
form = LovelyModelForm
forms.py
class LovelyModel(models.Model):
my_int = models.IntegerField()
from widgets import WhateverWidgetIWant
class LovelyModelForm(forms.ModelForm):
my_int = models.IntegerField(widget=WhateverWidgetIWant())
class Meta:
model = LovelyModel
from forms import LovelyModelForm
class LovelyModelAdmin(admin.ModelAdmin):
form = LovelyModelForm
admin.py
class LovelyModel(models.Model):
my_int = models.IntegerField()
from widgets import WhateverWidgetIWant
class LovelyModelForm(forms.ModelForm):
my_int = models.IntegerField(widget=WhateverWidgetIWant())
class Meta:
model = LovelyModel
from forms import LovelyModelForm
class LovelyModelAdmin(admin.ModelAdmin):
form = LovelyModelForm
您想做什么?我想您需要这样的东西(未经测试的代码):: 然而,这完全改变了字段值在Python中的表示方式,而不仅仅是在admin中,这可能不是理想的行为。也就是说,您有
object.duration==“x00:1:12”
,它将作为72
保存到数据库中
另请参见。我只想更改字段的显示方式,而不是小部件。我还更新了问题以说明这一点。