首页 > 解决方案 > 如何在 django 中获取所有用户与单个相关对象?

问题描述

我想输出所有用户及其相关分数

user = User.objects.all()
scores = user.myuser.all()

其中'myuser'是分数模型的相关名称,我尝试了上面的代码,但我收到了这个错误:

myuser 不是对象错误的属性。

标签: pythondjango

解决方案


我不完全确定您是型号名称,但是这样的事情应该可以工作:假设您有以下内容:

class StudentScores(models.Model):
    user = models.ForeignKey(User)

获取单个用户的所有分数:

scores = user.studentscores_set.all()

遍历所有用户及其分数:

for user in User.objects.all():
    for score in user.studentscores_set.all():
        print(score)

当您有外键关系时,您可以User使用<name>_set.all()语法从相关模型(在本例中)访问它们。

您可能可以使用带注释的查询集做一些更有效的事情,但是在不知道用例的情况下,推荐更多的东西有点困难。

注意:如果您已经为 scorerelated_name中的user字段定义了 a(像这样:) user = models.ForeignKey(User, related_name='scores',那么您可以像这样访问用户的分数:scores = user.scores.all()

另外,我注意到您有一个字段class = models.CharField(),请考虑将其重命名为其他名称,例如student_class保留class字。


推荐阅读