/ / Django: Remplir une relation ManytoMany pour chaque nouvelle forme dans un formset - django, django-forms, django-views

Django: Remplir une relation ManytoMany pour chaque nouvelle forme dans un formset - django, django-forms, django-views

J'utilise ces 3 modèles (simplifiés):

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)

J'ai un formulaire pour Model1 et un formset pour Model2s qui fonctionnent, mais le problème est que pour chaque Model2 du formset, je souhaite également un modèle3 qui connecte Model2 à Model1.

Comment puis-je ajouter Model3 pour qu'il soit rempli pour chaque Model2 du formset?
J’ai essayé de trouver une solution en utilisant des jeux de formulaires en ligne ou des jeux de formulaires de modèle, mais je ne les comprends toujours pas vraiment. Je ne sais même pas si c’est la bonne direction à prendre.

Je cherche tout ce qui peut me mener dans la bonne direction.

Réponses:

1 pour la réponse № 1

En supposant que ma question ci-dessus va dans le bon sens, puis dans la partie post-traitement de votre vue:

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)

Il semble que quelque chose d'aussi simple pourrait être mieux fait en utilisant un simple ManyToManyField, ou si vous avez besoin d'accéder à Model3, la même chose mais en utilisant through argument. Voir https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ManyToManyField.through Bien entendu, votre cas peut être plus compliqué que ce que vous avez indiqué dans votre question.