В Django я пытаюсь использовать встроенную фабрику наборов форм, чтобы пользователь мог редактировать и удалять экземпляры модели, связанные с родительской моделью, через чужую клавишуПо какой-то причине методы, которые я пытаюсь использовать, позволяют мне редактировать объекты, но когда я нажимаю флажок удаления, объект не удаляется. Он также не отображает никаких сообщений об ошибках, даже когда я использую formset.errors или formset.non_form_errors.
Модели:
class ExerciseName(models.Model):
muscle_group = models.ForeignKey(MuscleGroup, on_delete = models.CASCADE)
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.IntegerField(default=0)
reps = models.IntegerField(default=0)
date = models.DateField(default=datetime.date.today)
exercisegroup = models.ForeignKey(ExerciseName, on_delete = models.CASCADE)
Содержимое в представлении, которое я использую (не включая визуализацию):
exercisename = ExerciseName.objects.get(pk=exercisegroup_id)
SetsFormSet = inlineformset_factory(ExerciseName, SetLogger, fields=('weight','reps',), can_delete=True)
formset = SetsFormSet(instance=exercisename)
sets = SetLogger.objects.filter(exercisegroup=exercisename)
if request.method == 'POST':
formset = SetsFormSet(request.POST, instance=exercisename)
for form in formset:
if form.is_valid():
form = form.save(commit=True)
else:
formset = SetsFormSet(instance=exercisename)
И я отображаю формы в моей форме следующим образом:
<form method="post">{% csrf_token %}
{{ formset.management_form }}
<table>
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
<button type="submit" class="save btn btn-default">Save set</button>
</form>
Этот код показывает флажок удаления рядом с каждой формой, и каждая форма сохраняет, если я изменяю свои данные, но не если я выбираю «удалить». Я что-то упустил, что я должен делать по-другому?