【发布时间】:2016-11-25 14:31:16
【问题描述】:
我正在尝试将initial (es_initial) 数据提供给我的formset,其中initial 是一个字典列表。我的 view.py 有以下代码:
# get all answers by current student
es_answers_by_student = models.Answer.objects.filter(
student__user=request.user
).filter(
question__quiz=step
).filter(
eq_answer_text__icontains=''
)
# supply question prompt to the initial data
for es_question in eqs:
es_dict_for_initial.update({'question': es_question.prompt},)
es_initial.append(es_dict_for_initial.copy())
# supply saved answers
for answer in es_answers_by_student:
for _dict in es_initial:
_dict["eq_answer"] = answer.eq_answer_text
print(es_initial)
无法理解,为什么我的最后一个 for 循环总是返回与 es_answers_by_student 查询集中的最后一个值相同的值
编辑:
执行第一个for 循环后,es_initial 看起来像:
[{'question': 'question text 1'}, {'question': 'question text 2'}]
这是我在第二个for 循环之后想要完成的:
[{'question': 'question text 1', 'eq_answer': 'answer text 1'},
{'question': 'question text 2', 'eq_answer': 'answer text 2'}]
【问题讨论】:
-
这是预期的:您在
answer上循环,并且您的内部循环分配相同的字典数据,而不依赖于answer。你想达到什么目标? -
你能提供一个minimal, complete, and verifiable example吗?您的最后一个
for循环将es_answers_by_student列表 (?) 中的最后一个值写入es_initial列表中的每个字典,但是您希望/希望它做什么? -
你最好展示一下在所有循环之后的样子
-
它看起来像以下 [{'eq_answer': '答案文本', 'question': '问题文本 1?'}, {'eq_answer': '答案文本', ' question': '问题文本 2?'}, {'eq_answer': '答案文本', 'question': '问题文本 3?'}, {'eq_answer': '答案文本', '问题' : '问题文本 4?'}].
标签: python django list dictionary