2015-02-11 59 views

回答

2

您不需要爲兩個模型創建單個窗體。使用兩個Django表單,並把它們放到一個<form>標籤中:

class Model1Form(forms.ModelForm): 
    class Meta: 
     model = Model1 

class Model2Form(forms.ModelForm): 
    class Meta: 
     model = Model2 
     exclude = ('model1_one_to_one_field',) 

def create_models(request): 
    if request.method == 'POST': 
     form1 = Model1Form(request.POST) 
     form2 = Model2Form(request.POST) 
     if all([form1.is_valid(), form2.is_valid()]): 
      model1 = form1.save() 
      model2 = form2.save(commit=False) 
      model2.model1_one_to_one_field = model1 
      model2.save() 
      return redirect('create_models_success') 
    else: 
     form1 = Model1Form() 
     form2 = Model2Form() 
    return render(request, 'create_models.html', 
         {'form1': form1, 'form2': form2}) 

然後是create_models.html模板:

<form action="." method="POST"> 
    {% csrf_token %} 
    {{ form1.as_p }} 
    {{ form2.as_p }} 
    <button type="submit">Submit</button> 
</form> 
相關問題