python - 如何在具有用户模型外键的模型中定义 __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”,而不是显示主题的名称。下面是截图:
我试图把这个:
return f'{self.user.username.subject}'
但它给出的错误是'str' object has no attribute 'subject'
我也试过了:
return f'{self.user.subject}'
它给了我错误'User' object has no attribute 'subject'
如何在__str__()
方法中以及外部任何地方获取主题的名称?
解决方案
您需要致电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)
推荐阅读
- swift - 如何使用 Pin Joints 拖动 SKSpriteNode
- java - 如何在android中获取SD卡路径?
- spring-boot - 在java中为JSON数组添加值
- python - 导入python模块的本地副本
- apache-spark - Spark Streaming Kafka 问题
- google-fit - 分页在 Google Fit 中没有结果
- ruby - 键中的 ruby to_yaml 冒号
- java - Where to place comprobations in Java?
- multithreading - Running tsung_stats from tsung and getting Symbol not found: _Perl_xs_handshake error
- security - 是否可以强制输入 type="password" 被视为 type="text"?