使模型的__unicode__方法返回多个列
我该如何让Django模型的 __unicode__
方法返回多个值,以填充多个列呢?
2 个回答
4
只需在这个类里添加以下内容:
def __unicode__(self):
return '%s %s' % (self.value1, self.value2)
3
你不能这样做。
不过,你可以创建一个新的方法,然后把它添加到 list_display
中。根据它的文档,list_display
可以接受四种类型的值:
- 模型的一个字段
- 一个可调用的对象(比如一个函数或者一个 lambda 表达式),它会接收一个模型实例。
- 模型类的一个属性名(这可以是模型类中的任何函数)。
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)