【发布时间】:2015-06-06 11:39:13
【问题描述】:
我有几个模型 - User 和 Score。我正在将这些模型中的数据显示到我的模板中。来自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 的简化版。如果可以的话,也可以在那边回答!
【问题讨论】:
-
我投票结束这个问题,因为它属于Code Review
-
我在 Code Review 中发布了同样的问题,但它仍然有 1 个视图。
标签: django loops templates object nested