Сохранить набор форм, передав ему id другого набора форм, в который он вложен
Здравствуйте, у меня есть набор форм с именем groups, внутри которого есть другой набор форм с именем exercises. Моя проблема заключается в сохранении различных упражнений, созданных в форматах, в форматах групп, к которым они принадлежат. Я прилагаю фотографию, чтобы вы лучше поняли ситуацию, на фотографии синие ячейки (упражнения набора форм) должны быть сохранены в первой зеленой ячейке (набор групп)
ПРОСМОТРОВ
def creazioneView(request):
gruppiFormSet = formset_factory(GruppiForm, extra=1)
eserciziFormSet = formset_factory(EserciziForm, extra=1)
if request.method == "POST":
schede_form = SchedeForm(request.POST)
gruppi_formset = gruppiFormSet(request.POST, prefix='gruppi')
esercizi_formset = eserciziFormSet(request.POST, prefix='esercizi')
if schede_form.is_valid() and gruppi_formset.is_valid() and
esercizi_formset.is_valid():
schedaName = schede_form.cleaned_data['nome_scheda']
scheda = schede_form.save(commit = False)
scheda.utente = request.user
scheda.save()
for gruppo in gruppi_formset:
gruppi_instance = gruppo.save(commit = False)
gruppi_instance.gruppi_scheda = Schede.objects.get(nome_scheda =
schedaName)
gruppoName = gruppi_instance.dati_gruppo
gruppi_instance.save()
for esercizi in esercizi_formset:
esercizi_instance = esercizi.save(commit = False)
esercizi_instance.gruppo_single = DatiGruppi.objects.get(dati_gruppo
= gruppoName)
esercizi_instance.save()
return redirect('/lista-gruppi/')
else:
schede_form = SchedeForm()
gruppi_formset = gruppiFormSet(prefix='gruppi')
esercizi_formset = eserciziFormSet(prefix='esercizi')
context = {'schede_form': schede_form, 'gruppi_formset': gruppi_formset,
'esercizi_formset': esercizi_formset}
return render(request, "crea.html", context)
МОДЕЛИ
class Gruppi(models.Model):
nome_gruppo = models.CharField(max_length=100)
class Esercizi(models.Model):
nome_esercizio = models.CharField(max_length=100)
gruppo = models.ForeignKey(Gruppi, on_delete = models.CASCADE, related_name =
'gruppo')
class Schede(models.Model):
nome_scheda = models.CharField(max_length=100)
data_inizio = models.DateField()
data_fine = models.DateField()
utente = models.ForeignKey(User, on_delete = models.CASCADE,related_name =
'utente')
class DatiGruppi(models.Model):
giorni_settimana_scelta = [
("LUNEDI","Lunedì"),
("MARTEDI","Martedì"),
("MERCOLEDI","Mercoledì"),
("GIOVEDI","Giovedì"),
("VENERDI","Venerdì"),
("SABATO","Sabato"),
("DOMENICA","Domenica")
]
giorni_settimana = MultiSelectField(
choices = giorni_settimana_scelta,
default = '- '
)
dati_gruppo = models.ForeignKey(
Gruppi,
on_delete = models.CASCADE,
related_name = 'dati_gruppo'
)
gruppi_scheda = models.ForeignKey(
Schede,
on_delete = models.CASCADE,
related_name = 'gruppi_scheda'
)
class DatiEsercizi(models.Model):
serie = models.IntegerField()
ripetizione = models.IntegerField()
peso = models.DecimalField( max_digits = 4, decimal_places = 1, blank = True, null
= True)
dati_esercizio = models.ForeignKey(Esercizi,on_delete = models.CASCADE,
related_name = 'dati_esercizio')
gruppo_single = models.ForeignKey(DatiGruppi, on_delete = models.CASCADE,
related_name = 'gruppo_single')