首页 > 解决方案 > 如何在具有用户模型外键的模型中定义 __str__() 方法并获取 Django 中字段的值?

问题描述

我的 Django 应用程序中有以下模型,它有一个带有__str__()方法的 Django 默认用户模型的外键。

class Subject(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, max_length=100)
    subject = models.CharField(max_length=100)

    def __str__(self):
        return f'{self.user.username}'

当我们在管理面板中打开主题模型/表时,我想在管理面板中显示主题名称。假设如果我们有一个用户名为“khubi”的用户并且他有两个主题,那么管理面板只显示用户的用户名“khubi”,而不是显示主题的名称。下面是截图:

主题.png

我试图把这个:

return f'{self.user.username.subject}'

但它给出的错误是'str' object has no attribute 'subject'

我也试过了:

return f'{self.user.subject}'

它给了我错误'User' object has no attribute 'subject'

如何在__str__()方法中以及外部任何地方获取主题的名称?

标签: pythondjango

解决方案


您需要致电self.subject主题。

class Subject(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, max_length=100)
    subject = models.CharField(max_length=100)

    def __str__(self):
        return '{} ({})'.format(self.subject, self.user.username)

给定的代码将返回some_subject (khubi)


推荐阅读