2016-11-25 84 views
-1

我正試圖將initiales_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'}] 
+2

它的預期:你在'answer'循環,你的內循環指定相同的字典數據,而不依賴於'answer'。你想實現什麼? –

+0

你能提供[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)嗎?你最後一個'for'循環將'es_answers_by_student'列表(?)中的最後一個值寫入'es_initial'列表中的每個字典,但是你期望/希望它做什麼? –

+0

你最好展示它看起來像現在所有循環後的樣子 – Jacobian

回答

1

我想你只想環比_dict S,以及循環內更改了答案,是這樣的:

for _i, dict in enumerate(es_initial): 
    _dict["eq_answer"] = es_answers_by_student[i].eq_answer_text 

這暗示假定es_initiales_answers_by_student的排序是相同的,如果不是,您必須找到一些方法來索引到es_answers_by_student列表以找到正確的項目。

+0

感謝Nils古達,它爲我工作。我仍然在學習python和django – SaidAkh