【问题标题】:How can create a model form in django with a one-to-one relation with another model如何在 django 中创建与另一个模型具有一对一关系的模型表单
【发布时间】:2015-04-12 02:02:15
【问题描述】:

我想创建一个与另一个模型具有一对一关系的模型表单。即 Model1 与 Model2 具有一对一的关系。我希望我的表单显示来自 Model1 和 Model2 的所有字段。 还有什么是在视图中显示它的最佳方式。

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    您无需为两个模型创建单个表单。使用两个 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2011-11-15
      相关资源
      最近更新 更多