Как создать объект при подтверждении удаления в DeleteView в Django
В Django 3 я хочу удалить объект и после подтверждения пользователем удаления создать несвязанный объект. Код, который я написал ниже, создает несвязанный объект, как только пользователь нажимает кнопку "delete", но до того, как пользователь подтвердит удаление. Я хочу, чтобы несвязанный объект создавался после подтверждения удаления.
class PromoteQuestionToMeta(DeleteView):
model = QuestionList
fields = []
template_name = 'search/questionlist_confirm_delete.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
questionlist_object = self.object
MetaQuestionList.objects.create(question=questionlist_object.question, created_by=questionlist_object.created_by)
return context
def get_success_url(self):
return reverse_lazy('home:home')
Вы можете переопределить метод .delete(…)
[Django-doc] и создать объект:
class PromoteQuestionToMeta(DeleteView):
model = QuestionList
fields = []
template_name = 'search/questionlist_confirm_delete.html'
def delete(self, *args, **kwargs):
result = super().delete(*args, **kwargs)
MetaQuestionList.objects.create(
question=self.object.question,
created_by=self.object.created_by
)
return result
def get_success_url(self):
return reverse_lazy('home:home')