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

nic*_*ius 7 django django-models

不确定这是否是一个好方法(这更多的是一个技术问题),但是如果我有一个 Django 模型,其__str__函数结合了多个字段怎么办:

def __str__(self):
    return f'{self.field0} {self.field1} {self.field2}'
Run Code Online (Sandbox Code Playgroud)

在管理员中,我可能会list_display这样:

list_display = ['field0', 'field1']
Run Code Online (Sandbox Code Playgroud)

如何指定它以使用函数返回的对象表示形式__str__

list_display = [<__str__() representation>, 'field0', 'field1']
Run Code Online (Sandbox Code Playgroud)

默认情况下,如果您不在list_display管理中指定,它会给我我想要的内容。我不能两者兼得吗?

taa*_*hhh 13

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


Wil*_*sem 4

您可以将可调用项添加到list_display属性 [Django-doc],这样您就可以添加str

\n
def model_str(obj):\n    return str(model_str)\nmodel_str.short_description = \'Object\'\n\n\nclass MyModelAdminAdmin(admin.ModelAdmin):\n    # …\n    list_display = [model_str, \'field0\', \'field1\']
Run Code Online (Sandbox Code Playgroud)\n

str(\xe2\x80\xa6)因此,这是对内置函数 [python-doc]的引用。

\n

  • 只是看起来如此而已。但是如何在声明时获取*该实例*的字符串表示形式?顺便说一句,创建一个定义返回 self.__str__() 的属性的基本模型很简单。实际上 - 看起来你可以传递 `'__str__'` 因为它会寻找模型方法作为第四个选项...... (2认同)