Как я могу добавить оператор if в deleteview? CBV django - PullRequest
0 голосов
/ 17 апреля 2020

Эй, я хочу добавить оператор if и в соответствии с ним решить, удалять объект или нет. Я не мог найти его в Интернете. В общем, как я могу добавить, если заявления для любого CBV, включая обновление, например ..

Это мое удовольствие от DeleteView c:

class PostDeleteView(LoginRequiredMixin, DeleteView):
    model = Post
    success_url = reverse_lazy('TheApp:post_list')

РЕДАКТИРОВАТЬ! РЕШЕНИЕ, КОТОРОЕ РАБОТАЛО ДЛЯ МЕНЯ: (Спасибо AKX)

def delete(self, request, *args, **kwargs):
        if (Post.author == request.user.username):
            return super().delete(request, *args, **kwargs)
        else:
            return HttpResponse('You are not the owner of this Post! You can not delete it!')

1 Ответ

0 голосов
/ 17 апреля 2020

Ну, как вы знаете, методы CBV сопоставляются с методами HTTP, поэтому просто переопределите delete() и добавьте ваше условие:

class SomeView(..., DeleteView, ...):
    def delete(self, request, *args, **kwargs):
        if request.GET.get('really') != 'true':
            return HttpResponse('I knew you were just kidding!')
        return super().delete(request, *args, **kwargs)
...