Questions matching query does not exist...,как испаравить?
DoesNotExist at /delete/51/
Questions matching query does not exist.
ошибка означает, что ничего подобного не найдено, хотя в бд данная запись имеется. Кроме того эта ошибка появляется не у всех записей.
views
class QuestionDeleteView(LoginRequiredMixin, DeleteView):
model = Questions
context_object_name = 'delete_form'
success_url = reverse_lazy('home')
success_msg = 'Все ок'
pk_url_kwarg = "q_pk"
def post(self, request, *args, **kwargs):
messages.success(self.request, self.success_msg)
return super().post(request)
def delete(self, request, *args, **kwargs):
self.object = self.get_object()
if self.request.user != self.object.author:
return self.handle_no_permission()
success_url = self.get_success_url()
self.object.delete()
return HttpResponseRedirect(success_url)
urls
path('delete/<int:q_pk>/', QuestionDeleteView.as_view(), name='delete'),
шаблон
<form id="delete_form{{more_q.id}}" action="{% url 'delete' more_q.pk %}" method="post">{% csrf_token %}{{ delete_form }}</form>
<a href="javascript:void()" onclick="delete_question{{more_q.id}}()">Удалить</a>
<script>
function delete_question{{more_q.id}}() {
if (confirm("Вы уверены")) {
document.getElementById('delete_form{{more_q.id}}').submit()
}
}
</script>
Вам не нужно переопределять метод delete
, достаточно метод get_queryset
. Остальное сделает уже Ваше View
самостоятельно
def get_queryset(self):
user = self.request.user
return super().get_queryset().filter(author=user)
Метод post
тоже не надо, есть SuccessMessageMixin
.