我正在使用这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找到解决方案,但我仍然不太了解它们。我甚至不知道这是否是正确的方向。
我正在寻找能指引我正确方向的任何事情。
答案 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当然,您的情况可能比您在问题中指出的情况更复杂。