/ / Django: Compilare una relazione ManytoMany per ogni nuova forma in un formato - django, forme django, viste django

Django: Compilare una relazione ManytoMany per ogni nuova forma in un formato - django, forme django, viste django

Sto usando questi 3 modelli (semplificati):

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)

Ho un modulo per Model1 e un formset per Model2 che funzionano ma il problema è che per ogni Model2 nel formset voglio che ci sia anche un Model3 che collega Model2 a Model1.

Come aggiungo Model3 in modo che venga compilato per ogni Model2 nel formset?
Ho provato a trovare una soluzione usando inlineformsets o modelformset, ma non li capisco davvero, non so nemmeno se è la giusta direzione da seguire.

Sto cercando qualcosa che mi indichi la giusta direzione.

risposte:

1 per risposta № 1

Supponendo che la mia domanda di cui sopra sia lungo le linee giuste, quindi nella parte di gestione POST della tua vista:

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)

Sembra che qualcosa di questo semplice possa essere fatto meglio usando un semplice ManyToManyField, o se è necessario accedere a Model3, quindi lo stesso ma usando il through discussione. Vedere https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ManyToManyField.through Certo, il tuo caso potrebbe essere più complicato di quello che hai indicato nella tua domanda.