gpt4 book ai didi

python - Django - 从 View 中为当前用户准备对象

转载 作者:行者123 更新时间:2023-12-01 06:06:38 25 4
gpt4 key购买 nike

考虑这个模型

class Exercise(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name

class Score(models.Model):
"""Scores of users by exercise"""
exo = models.ForeignKey(Exercise)
user = models.ForeignKey(User)
score = models.IntegerField()
class Meta:
unique_together = (('exo', 'user',),)

我有一个显示练习的模板。

<ul>
{% for exo in exos %}
<li>{{ exo }}</li>
{% endfor %}
</ul>

这是 View

def view_exos(request):
"""Lists Exercises"""
objs = {
'exos': Exercise.objects.all(),
}
return render_to_response('content/contents.html', objs
, context_instance=RequestContext(request)
)

现在我想在每个Exercise(如果有的话)前面显示当前用户的Score,以便从模板中访问它这种方式:

<li>{{ exo }} - {{ exo.user_score }}</li>

最佳答案

我要做的就是预先获取所有用户当前的分数,创建一个将练习映射到分数的字典,然后将分数添加为每个练习的属性。像这样的东西:

user_scores = request.user.score_set.all()
score_dict = dict((sc.exo_id, sc.score) for sc in user_scores)
exos = Exercise.objects.all()
for ex in exos:
ex.current_user_score = score_dict.get(ex.id)

现在,exos 中的每个练习都有一个 current_user_score 属性,它是当前用户在该练习中的得分(或无)。

关于python - Django - 从 View 中为当前用户准备对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com