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>
models
class Questions(models.Model):
"""Модель для формирования вопросов"""
author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,verbose_name='Владелец статьи',default='')
q_name = models.CharField(max_length=255, verbose_name='Вопрос')
slug = models.SlugField(max_length=255, db_index=True, verbose_name='URL') # unique= поле уникальное
tags = TaggableManager()
q_text = models.TextField(verbose_name='Контент',default='')
is_published = models.BooleanField(default=True, verbose_name='Состояние публикации')
time_create = models.DateTimeField(auto_now_add=True, verbose_name='Время создания')
def get_absolute_url(self):
return reverse('question', kwargs={'q_pk': self.pk})
def get_answer(self):
return self.answer_set.filter(parent__isnull=True)
def __str__(self):
return self.q_nam
e
ошибка
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/delete/51/
Django Version: 4.1.4
Python Version: 3.8.10
Installed Applications:
['user_profile.apps.UserProfileConfig',
'notice.apps.NoticeConfig',
'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tgmsg.apps.TgmsgConfig',
'taggit',
'django.contrib.humanize']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 189, in __get__
rel_obj = self.field.get_cached_value(instance)
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\fields\mixins.py", line 15, in get_cached_value
return instance._state.fields_cache[cache_name]
During handling of the above exception ('post'), another exception occurred:
File "C:\django-sites\community\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\django-sites\community\venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\django-sites\community\venv\lib\site-packages\django\views\generic\base.py", line 103, in view
return self.dispatch(request, *args, **kwargs)
File "C:\django-sites\community\venv\lib\site-packages\django\contrib\auth\mixins.py", line 73, in dispatch
return super().dispatch(request, *args, **kwargs)
File "C:\django-sites\community\venv\lib\site-packages\django\views\generic\base.py", line 142, in dispatch
return handler(request, *args, **kwargs)
File "C:\django-sites\community\venv\lib\site-packages\django\views\generic\edit.py", line 278, in post
return self.form_valid(form)
File "C:\django-sites\community\venv\lib\site-packages\django\views\generic\edit.py", line 284, in form_valid
self.object.delete()
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\base.py", line 1118, in delete
return collector.delete()
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\deletion.py", line 493, in delete
signals.post_delete.send(
File "C:\django-sites\community\venv\lib\site-packages\django\dispatch\dispatcher.py", line 176, in send
return [
File "C:\django-sites\community\venv\lib\site-packages\django\dispatch\dispatcher.py", line 177, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "C:\django-sites\community\habr\blog\models.py", line 54, in user_uncommented_post
post = answer.post
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 207, in __get__
rel_obj = self.get_object(instance)
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 170, in get_object
return qs.get(self.field.get_reverse_related_filter(instance))
File "C:\django-sites\community\venv\lib\site-packages\django\db\models\query.py", line 650, in get
raise self.model.DoesNotExist(
Exception Type: DoesNotExist at /delete/51/
Exception Value: Questions matching query does not exist.
Источник: Stack Overflow на русском