如何在django中让所有具有单独相关对象的用户?

时间:2019-07-23 18:42:20

标签: python django

我想输出所有具有相关分数的用户

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

“ myuser”是分数模型的相关名称,我尝试了上面的代码,但出现此错误:

  

myuser不是对象错误的属性。

2 个答案:

答案 0 :(得分:0)

我不能完全确定您是型号名称,但是这样的方法应该可以工作: 假设您有类似的东西:

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())中访问它们。

您可能可以对带注释的查询集进行更有效的操作,但是在不知道用例的情况下,建议更多的内容会更加困难。

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

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

答案 1 :(得分:0)

您不需要使用词典来存储用户和乐谱,您可以直接从用户的对象中进行操作。

在view.py中:

def index(request):
    users = user.objects.all()
    return render(request,'template_name.html',{'users':users})

在Django模板中:

{% for user in users %}
    {% for score in user.studentscores_set.all %}
        <p>{{ score.field_name }}</p>
    {% endfor %}
{% endfor %}