【发布时间】:2018-05-18 09:30:30
【问题描述】:
我想在我的页面上显示两个表格,其中只有一个列被修改,其他所有列都相同。我想知道是否有任何其他方法比简单地循环两次并创建表两次更有效?
我现在要做的是:
# Example models
class Question(models.Model):
question = models.TextField()
class Answer(models.Model):
question = models.ForeignKey(Question)
score = models.Integerfield()
SCORETYPES = (
(1, 'initial'),
(2, 'current'),
)
scoreType = models.Integerfield(choices=SCORETYPES)
def __str__(self):
return "Answer: " + scoreType
在我看来,我会将问题与答案联系起来:
# Example view
questions = Question.objects.prefetch_related(Prefetch('answer_set', to_attr='answers')).all()
这意味着我的问题对象对于每个问题看起来都是这样的
question.answers = [<Answer: Initial>, <Answer: Current>]
然后在我的模板中我会像这样打印它们
# Example template
{% for question in questions %}
{% for answer in question.answers %}
<p>{{ answer.scoreType }}: {{ answer.score }}</p>
{% endfor %}
{% endfor %}
这可行,但现在我想为所有初始分数创建一个表,为所有当前分数创建一个表,这样你就会得到这样的结果:
Initial Scores
Question Score
Q1 2
Q2 3
Current Scores
Question Score
Q1 1
Q2 4
如您所见,这需要我使用 for 循环两次,并且每次检查 scoretype 是 1 还是 2。是否有更有效的方法来做到这一点,或者这是要走的路?我有很多问题,我想尽可能高效地工作。
提前致谢!
【问题讨论】:
标签: python django python-3.x django-templates