Django:为formset

时间:2016-10-28 21:02:51

标签: django django-forms django-views

我正在使用这3个模型(简化):

class Model1(models.Model):
    field1 = models.CharField(max_length=25)

class Model2(models.Model):
    field1 = models.CharField(max_length=25)

class Model3(models.Model):
    model1 = models.ForeignKey(Model1)
    model2 = models.ForeingKey(Model2)

我有一个Model1的表单和Model2s的formset可以工作,但问题是对于formset中的每个Model2,我希望它也是一个连接Model2和Model1的Model3。

如何添加Model3以便为formset中的每个Model2填写? 我尝试使用inlineformsets或modelformsets找到解决方案,但我仍然不太了解它们。我甚至不知道这是否是正确的方向。

我正在寻找能指引我正确方向的任何事情。

1 个答案:

答案 0 :(得分:1)

假设我的上述问题沿着正确的方向行进,那么在视图的POST处理部分中:

if model_one_form.is_valid() and model_two_formset.is_valid():
    obj_one = model_one_form.save()
    for model_two_form in model_two_formset:
        obj_two = model_two_form.save()
        obj_three = Model3.objects.create(model1=obj_one, model2=obj_two)

似乎可以使用简单的ManyToManyField更好地完成这个简单的事情,或者如果您需要访问Model3,那么使用through参数也是如此。请参阅https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ManyToManyField.through当然,您的情况可能比您在问题中指出的情况更复杂。