django - 如何更改 Django 管理中特定字段类型的呈现?

标签 django django-models django-admin

例如,我有一个 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/

相关文章:

django - 什么是 django 中的 @csrf_protect_m 为什么使用它?

django 管理员给出警告 "Field ' X' 没有默认值”

python - 将 ImageField 的内容复制到 Django 中的新文件路径

python - 无法在 Django 模型中将字符串转换为 float

Django Filter 查询 - 如果参数为空则忽略

python - 更改不同字段时自动更新字段

python - 如果 user.is_authenticated for Django,模板无法正确呈现

django - 命令 "django-admin.py startproject mysite"无法识别

django - Django 模型验证是否仅通过表单 API 处理?

django - 如何从 Django 的 TabularInline 管理 View 中省略对象名称?