2013-08-04 2 views
0

이것은 다소 간단한 문제 일 수 있습니다. 하지만 데이터베이스에서 가져온 초기 데이터로 양식을 채우려고합니다. 어디서부터 시작해야할지 모르겠습니다. 어떤 조언이 도움이 될 것입니다.Django가 formset의 초기 데이터 채우기

일부 배경 : 여러 지표가있는 질병이 있습니다. 내 양식에서는 disease_id = 2를 당기고 현재 데이터베이스에있는 지표를 채우려는 경향이 있으므로 편집 할 수 있습니다. 요청 POST에서

views.py

def drui(request): 

disease_id = request.GET.get('disease_id', '2') 

    if request.method == "POST": 

     disease = get_object_or_404(Disease, pk=disease_id) 
     diseaseForm = DiseaseForm(request.POST, instance=disease) 

     if diseaseForm.is_valid(): 
      new_disease = diseaseForm.save(commit=False) 
      indicatorInlineFormSet = IndicatorFormSet(request.POST, request.FILES, instance=new_disease) 

      if indicatorInlineFormSet.is_valid(): 
      new_disease.save() 
      indicatorInlineFormSet.save() 
      return HttpResponseRedirect(reverse(somewhere)) 

    else: 
     diseaseForm = DiseaseForm() 
     indicatorInlineFormSet = IndicatorFormSet(instance=Disease()) 

    return render_to_response("drui.html", {'diseaseForm': diseaseForm, 'indicatorInlineFormSet': indicatorInlineFormSet},context_instance=RequestContext(request)) 

답변

1

그냥 넣어 질병 객체 밖으로

def drui(request): 
    disease_id = request.GET.get('disease_id', '2') 
    disease = get_object_or_404(Disease, pk=disease_id) 

    if request.method == "POST": 
     diseaseForm = DiseaseForm(request.POST, instance=disease) 
     if diseaseForm.is_valid(): 
      new_disease = diseaseForm.save(commit=False) 
      indicatorInlineFormSet = IndicatorFormSet(request.POST, request.FILES, 
                instance=new_disease) 
      if indicatorInlineFormSet.is_valid(): 
      new_disease.save() 
      indicatorInlineFormSet.save() 
      return HttpResponseRedirect(reverse(somewhere)) 
    else: 
     diseaseForm = DiseaseForm(instance=disease) 
     indicatorInlineFormSet = IndicatorFormSet(instance=disease) 

    return render_to_response("drui.html", { 
     'diseaseForm': diseaseForm, 
     'indicatorInlineFormSet': indicatorInlineFormSet 
    },context_instance=RequestContext(request)) 
+0

감사합니다! 나는 또한 게시물 요청 바깥에 indicatorInlineFormset을 넣고 모든 인스턴스를 동일하게 변경해야했습니다. – nlr25

관련 문제