我可以更有效地编写以下 Django 代码吗?
Can I write the following Django code more effectively?
我有几个模型 - 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的简化版。可以的话,也可以在那边回答一下!
下面的方式既不需要查询所有的分数也不需要比较对象。但我确定您要解决的问题是不同的:)。
{% for user in users %}
{% for score in user.score_set.all %}
{{ user }} -- {{ score.subject }} -- {{ score.score }} <br>
{% endfor %}
{% endfor %}
我有几个模型 - 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的简化版。可以的话,也可以在那边回答一下!
下面的方式既不需要查询所有的分数也不需要比较对象。但我确定您要解决的问题是不同的:)。
{% for user in users %}
{% for score in user.score_set.all %}
{{ user }} -- {{ score.subject }} -- {{ score.score }} <br>
{% endfor %}
{% endfor %}