Удаление объекта с помощью django inline_formset

Я пытаюсь создать страницу, позволяющую владельцу ресторана редактировать/удалять пункты из своего меню.

Models.py:

class Restaurant(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                on_delete=models.CASCADE,
                                )
    name = models.CharField(max_length=200, verbose_name = 'Restaurant Name')

class Menu(models.Model):
    restaurant = models.OneToOneField(
        Restaurant,
        on_delete=models.CASCADE,
        primary_key=True,
    )


class Item(models.Model):
    menu = models.ForeignKey(Menu, on_delete=models.CASCADE) 
    name = models.CharField(max_length=100)
    description = models.TextField(blank=True)

views.py:

def test_url(request):
    # Get this Restaurant object
    restaurant = Restaurant.objects.get(pk = 1) 
    # Get this Restaurant's Menu object
    restaurant = restaurant.menu
    # Create inline formset
    ItemFormSet = inlineformset_factory(Menu, Item, fields=('name', 'description',), max_num=1, extra=0, can_delete=True)

    if request.method == 'POST':
        formset = ItemFormSet(request.POST, instance = menu)
        if formset.is_valid():
            for form in formset:
                form.save()
            return HttpResponse(formset.cleaned_data) # referenced later in the question
    else:
        formset = ItemFormSet(instance = menu)


    return render(request, 'restuarant/edit_menu.html', {
         'formset': formset,
         })

В документации указано, что атрибут can_delete: " добавляет новое поле к каждой форме с именем DELETE и является полем forms.BooleanField. Когда данные приходят через маркировку любого из полей удаления, вы можете получить к ним доступ с помощью deleted_forms". Это действительно добавляет поле delete в мой шаблон, и если я выберу этот флажок на одной из форм, он вернет:

{'name': 'Fried Calamari', 'description': '', 'id': , 'DELETE': True, 'menu': .RelatedManager object at 0x7fa644347a30>>>}

но сам объект никогда не удаляется (это представление правильно обновляет объекты). Я также читал, что формы с 'DELETE': True не проходят formset.is_valid(), поэтому я не уверен, почему я вижу данные, принадлежащие форме, которую я выбрал для удаления в HttpResponse. В любом случае, может ли кто-нибудь помочь мне действительно удалить объекты, помеченные для удаления? Спасибо.

Вернуться на верх