我可以更有效地编写以下 Django 代码吗?

Can I write the following Django code more effectively?

我有几个模型 - UserScore。我正在将这些模型中的数据显示到我的模板中。来自 Score 的数据根据​​来自 User 的数据进行过滤。我在模板中使用嵌套的 for 循环和 if 条件来获得我想要的结果。但是,我想知道是否有更好的方法来得出相同的结果,因为一旦数据数量庞大,嵌套的 for 循环将耗尽大量时间和资源。

models.py

class User(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()

class Score(models.Model):
    user = models.ForeignKey('User')
    subject = models.CharField(max_length=20)
    score = models.IntegerField()

views.py

def Home(request):
    users = User.objects.all()
    scores = Score.objects.all()
    return render(request, "home.html", {'users': users, 'scores': scores})

home.html(模板)

{% for user in users %}
    {% for score in scores %}
    {% if score.user == user %} {{ user }} -- {{ score.subject }} -- {{ score.score }} <br>{% endif %}
    {% endfor %}
    {% endfor %}

结果

Michel -- Physics -- 80 
Michel -- Chemistry -- 90 
Zarif -- Physics -- 100 
Zarif -- Biology -- 80 

本题是this的简化版。可以的话,也可以在那边回答一下!

下面的方式既不需要查询所有的分数也不需要比较对象。但我确定您要解决的问题是不同的:)。

{% for user in users %}
    {% for score in user.score_set.all %}
    {{ user }} -- {{ score.subject }} -- {{ score.score }} <br>
    {% endfor %}
{% endfor %}