在 Django Admin list_display 中指定 __str__() 表示

问题描述 投票:0回答:2

不确定这是否是一个好方法(这更多的是一个技术问题),但是如果我有一个带有

__str__
函数的 Django 模型,该函数组合了多个字段,该怎么办:

def __str__(self):
    return f'{self.field0} {self.field1} {self.field2}'

在管理员中,我可能有

list_display
,如下所示:

list_display = ['field0', 'field1']

如何指定它以使用

__str__
函数返回的对象表示形式?

list_display = [<__str__() representation>, 'field0', 'field1']

默认情况下,如果您不在管理中指定

list_display
它会给我我想要的。我不能两者兼得吗?

django django-models
2个回答
15
投票

只需在 ModelAdmin 类中添加

list_display = ['__str__',]
即可完成此操作。基本上
__str__
是一个 python 方法,它给出了 python 类的表示,并且列表显示允许可调用。


7
投票

您可以将 callables 添加到

list_display
属性 [Django-doc],这样就可以添加
str
:

def model_str(obj):
    return str(model_str)
model_str.short_description = 'Object'


class MyModelAdminAdmin(admin.ModelAdmin):
    # …
    list_display = [model_str, 'field0', 'field1']

因此这是对内置

str(…)
函数的引用[python-doc]

© www.soinside.com 2019 - 2024. All rights reserved.