如何在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
保存到数据库中


另请参见。

我只想更改字段的显示方式,而不是小部件。我还更新了问题以说明这一点。