使模型的__unicode__方法返回多个列

4 投票
2 回答
3039 浏览
提问于 2025-04-19 03:55

我该如何让Django模型的 __unicode__ 方法返回多个值,以填充多个列呢?

2 个回答

4

只需在这个类里添加以下内容:

def __unicode__(self):
    return '%s %s' % (self.value1, self.value2)    
3

你不能这样做。

不过,你可以创建一个新的方法,然后把它添加到 list_display 中。根据它的文档list_display 可以接受四种类型的值:

  1. 模型的一个字段
  2. 一个可调用的对象(比如一个函数或者一个 lambda 表达式),它会接收一个模型实例。
  3. 模型类的一个属性名(这可以是模型类中的任何函数)。
  4. ModelAdmin 类的一个属性名

对于你的情况,我们需要使用第3种,在你的 models.py 文件中:

class SomeModel(models.Model):
   name = models.CharField(max_length=300)
   # etc, etc.

   def __unicode__(self):
       return unicode(self.name)

   def something_else(self):
       return self.another_field

admin.py 文件中:

class SomeModelAdmin(admin.ModelAdmin):
    list_display = ['__unicode__', 'something_else']

admin.site.register(SomeModel, SomeModelAdmin)

撰写回答