在Django管理页面上显示自定义格式名称

2024-10-02 18:16:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想显示名字和姓氏。为了实现这一点,我使用了__str__()方法。但它不起作用

class OnlineUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        return f"{self.user.first_name} {self.user.last_name}"

而是显示用户ID

在{}中

class OnlineUsersAdmin(admin.ModelAdmin):
    # a list of displayed columns name.
    list_display=['user']

admin.site.register(OnlineUsers, OnlineUsersAdmin)

我哪里做错了?如何获得我想要的格式

版本:

Django==2.0.1

调试:

user_info=OnlineUsers.objects.get_or_create(user=self.user)
print(user_info.__str__())

输出:

((<OnlineUsers: FIRST_NAME LAST_NAME >, False))

Tags: 方法nameselfinfoadminmodels名字list
2条回答

^{} (Django doc)也支持可调用方法。因此,在模型admin上定义一个user(...)方法,如下所示:

class OnlineUsersAdmin(admin.ModelAdmin):
    # a list of displayed columns name.
    list_display = ['user']

    def user(self, instance):
        return instance.__str__()

您应该在列表显示中使用__str__而不是用户:

list_display=['__str__']

否则,您会告诉django显示user字段。由于User模型没有覆盖__str__方法,所以您可以看到用户的id

您还可以删除list_display属性。在这种情况下,默认情况下将使用__str__

相关问题 更多 >