Я изучаю Django и пытаюсь понять DeleteView
из первых принципов.
В исходном коде для DeletionMixin
есть и метод delete
, и post
метод:
class DeletionMixin:
"""Provide the ability to delete objects."""
success_url = None
def delete(self, request, *args, **kwargs):
"""
Call the delete() method on the fetched object and then redirect to the
success URL.
"""
self.object = self.get_object()
success_url = self.get_success_url()
self.object.delete()
return HttpResponseRedirect(success_url)
# Add support for browsers which only accept GET and POST for now.
def post(self, request, *args, **kwargs):
return self.delete(request, *args, **kwargs)
В чем разница между этими двумя методами и когда они вызываются?
Метод delete()
вызывается только для request.GET
?
Если метод delete()
также определен для класса models.Model
, это делает что-то другое, переопределить DeletionMixin
в виде или что-то еще?
Например:
class MyModel(models.Model):
def delete(self):
...
return
Пожалуйста, не могли бы вы помочь мне понять логический "рабочий процесс" того, что происходит, когда DeleteView
call.
Соответствующие конструкции классов ниже:
class BaseDeleteView(DeletionMixin, BaseDetailView):
pass
class DeleteView(SingleObjectTemplateResponseMixin, BaseDeleteView):
template_name_suffix = '_confirm_delete'