为什么Django Admin有时在索引中使用模型的某个字段,而不是__unicode__方法?
在我的一些模型中,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的一个bug吗?
1 个回答
2
你可以通过在你的 ModelAdmin
类中使用 list_display
选项来定制在 Django 管理后台显示的字段。
模型的 __unicode__
方法和 Meta.ordering
选项不会影响显示的字段。
如果你没有设置 list_display
,那么默认情况下会显示一列,每个对象的 unicode 字符串。
如果你的模型没有显示 unicode 字符串,那可能是因为你已经设置了 list_display
。比如,如果你想显示名字字段而不是 unicode 字符串,你可以这样做:
class MyModelAdmin(models.ModelAdmin):
list_display = ['name']
如果你想同时显示 unicode 字符串和其他字段,只需在 list_display
中包含 __unicode__
。
class MyModelAdmin(models.ModelAdmin):
list_display = [`__unicode__`, 'name']