【问题标题】:Why django admin sometimes uses some field of the model in the index, instead of __unicode__ method?为什么 django admin 有时在索引中使用模型的某些字段,而不是 __unicode__ 方法?
【发布时间】:2011-10-08 00:06:57
【问题描述】:

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

这通常发生在以下情况时:

class Meta:
    ordering = ['name']

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

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

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

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

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    您可以使用 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'] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 2016-02-06
      • 2013-03-25
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 2016-02-14
      相关资源
      最近更新 更多