Добавление условия к DeleteView в Django
Я изучаю основы Django и пытаюсь добавить условие перед удалением экземпляра ингредиента в общем DeleteView.
Но похоже, что DeleteView просто игнорирует мое условие. Что я делаю не так?
Заранее благодарю за внимание к моему вопросу!
class IngredientDelete(LoginRequiredMixin, DeleteView):
model = Ingredient
template_name = "inventory/ingredient_delete_form.html"
success_url = "/ingredient/list"
def delete(self, request, *args, **kwargs):
object = self.get_object()
if len(object.reciperequirement_set.all()) > 0:
object.delete(save=False)
messages.error("You can't delete an ingredient if it is used in Menu Items. Please update Menu items first. You can check related Menu items list on the Ingredient Details page")
return render(request, "ingredient/<pk>", messages)
else:
return super().delete(request, *args, **kwargs)
В оболочке python shell для объекта экземпляра я пробую len(object.reciperequirement_set.all())
и получаю 1
, поэтому я полагаю, что запрос в моем условии задан правильно.
На странице локального хоста для того же экземпляра Ingredient я получаю страницу ошибки:
ProtectedError at /ingredient/23/delete
("Cannot delete some instances of model 'Ingredient' because they are referenced through protected foreign keys: 'RecipeRequirement.ingredient'.", {<RecipeRequirement: menu item: testdel, price: 34.00, ingredient: testingr: 22.00 tsp>})
Метод запроса: POST URL запроса: http://127.0.0.1:8000/ingredient/23/delete. Версия Django: 4.0.4 Тип исключения: ProtectedError
Определите test_func()
своими собственными условиями.