【问题标题】:Django - How can I change profile view in admin's panel?Django - 如何在管理员面板中更改个人资料视图?
【发布时间】:2021-07-26 08:06:22
【问题描述】:

好吧,我创建了一个模型配置文件:

class Profile(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL,
        on_delete=models.PROTECT,
    )
    website = models.URLField(blank=True)
    bio = models.CharField(max_length=240, blank=True)

并将其添加到 admin.py:

@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
    model = Profile

所以,我的管理员面板上有用户面板。但是配置文件列表中的每个配置文件都称为“配置文件对象(1)”、“配置文件对象(2)”等,但是当我点击链接时,我可以看到用户名。那么,如何更改配置文件列表中配置文件的视图,以便在调用用户时调用它们?

在管理员面板中的外观

配置文件中的外观

以及我希望它的样子(用 F12 修改):

已编辑:我的 str 的样子(已评论,因为不起作用):

# __str__ - более удобное отображение в админке
#    def __str__(self):
#         return self.user_username

【问题讨论】:

  • 您是否在 Profile 模型上定义了 __str__
  • @thebjorn - 好吧,我试过这样做,但出错了。我已经添加了它的外观,但不起作用
  • 感谢我的作品:D @thebjorn

标签: python django django-admin


【解决方案1】:

修复你的__str__()

def __str__(self):
    return self.user.username

【讨论】:

    【解决方案2】:

    这是您的#admin.py 中的另一个解决方案,您可以编写list_display = ["user__username",]

    【讨论】:

    • 这种字段声明经常会报错。
    • 在我看来,如果你只想显示一个字段,比如用户名,这个解决方案比str method 更好。但是,如果您想像这样(id) username 一起显示 id 和用户名,那么使用str method 是一个好方法
    • 合法,但我的原则是始终覆盖 __str__ 方法。
    猜你喜欢
    • 2011-01-17
    • 2021-10-27
    • 2018-04-14
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多