简体   繁体   中英

Django populating initial data in formset

This may be a rather simple problem. But I am trying to populate my form with initial data taken from a database. I don't really know where to start. Any advice would help.

Some background: I have a disease with multiple indicators. In my form I am pulling disease_id = 2 then wanting to populate the indicators currently in the database, so they may be edited.

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))   

Just put disease object out in the request POST

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))   

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM