为什么django admin有时会在索引中使用模型的某个字段,而不是__unicode__方法?

时间:2011-10-08 00:06:57

标签: python django django-admin

对于我的一些模型,Django-admin,在模型对象的索引中,而不是像正常那样显示__unicode__方法的输出,它只显示模型的一个字段。

通常会出现以下情况:

class Meta:
    ordering = ['name']

在我的模型中,然后会显示字段name的值(即使还有__unicode__方法),但并非总是如此,有时它只会显示__unicode__所说的内容即使有一个Meta排序。

我所有的Unicode方法都很正常,例如:

def __unicode__(self):
    return u'[%s] %s' % (self.field, self.name, )

我很困惑,为什么有时会使用字段而不是__unicode__,我怎样才能让它始终使用__unicode__方法?这是Django 1.3。这是Django中的错误吗?

1 个答案:

答案 0 :(得分:2)

您可以使用ModelAdmin课程中的list_display选项自定义django管理员中显示的字段。

模型__unicode__方法和Meta.ordering选项对显示的字段没有任何影响。

如果未设置list_display,则默认行为是显示包含每个对象的unicode字符串的单个列。

如果没有为您的模型显示unicode字符串,则听起来您已设置list_display。例如,要显示名称字段而不是unicode字符串,您可以执行以下操作:

class MyModelAdmin(models.ModelAdmin):
    list_display = ['name'] 

如果要显示unicode字符串其他字段,只需在__unicode__中加入list_display

class MyModelAdmin(models.ModelAdmin):
    list_display = [`__unicode__`, 'name']