Я новичок в Django и пытаюсь отобразить встроенный набор форм в моем приложении Django, чтобы позволить пользователю добавлять экземпляры дочерней модели в соответствующий экземпляр родительской модели. Я чувствую, что есть простой ответ, но до сих пор я не смог придумать или найти решение.
Мои модели:
class ExerciseName(models.Model):
name_of_exercise = models.CharField(max_length=100, default = 'Exercise name', unique=True)
def __str__(self):
return self.name_of_exercise
class SetLogger(models.Model):
weight = models.FloatField(default=0)
reps = models.FloatField(default=0)
date = models.DateField(auto_now=True)
exercise_group = models.ForeignKey(ExerciseName, on_delete = models.CASCADE)
Мои формы:
class ExerciseNameForm(forms.ModelForm):
class Meta:
model = ExerciseName
fields = ('name_of_exercise', )
Просмотров:
def name_list(request):
exercise_name = ExerciseName.objects.all()
sets = SetLogger.objects.all()
exercisename = ExerciseName.objects.get(pk=1)
SetLoggerFormSet = inlineformset_factory(ExerciseName, SetLogger, fields=('weight','reps',))
if request.method == 'POST':
form = ExerciseNameForm(request.POST)
formset = SetLoggerFormSet(request.POST, instance=exercisename)
if form.is_valid():
form.save(commit=True)
else:
form = ExerciseNameForm()
if formset.is_valid():
formset.save(commit=True)
else:
formset = SetLoggerFormSet()
return render(request, 'gymloggerapp/name_list.html', {'exercise_name': exercise_name, 'form': ExerciseNameForm(), 'sets': sets, 'formset': formset})
До сих пор это работало, позволяя мне добавлять вес и количество повторений к первому экземпляру моей модели ExerciseName (с pk = 1), просто отображая набор формв моем шаблоне. Однако я хотел бы создать таким образом набор форм для каждого экземпляра модели ExerciseName, а затем отобразить все эти элементы на одной странице в одном и том же шаблоне. Я не уверен, как это сделать, поскольку get () только позволяет мне получить 1 экземпляр модели ExerciseName?