я пытаюсь получить доступ к странице, используя URL-адрес-слаг, но я продолжаю получать эту ошибку The QuerySet value for an exact lookup must be limited to one result using slicing. я думал, что это будет ошибка filter или get, на мой взгляд, но я не знаю, откуда эта ошибка
view.py
def tutorial_topic_category(request, slug):
tutorial_category = TutorialCategory.objects.get(slug=slug)
tutorial_topic_category = TutorialTopicCategory.objects.filter(tutorial_category=tutorial_category)
context = {
'tutorial_topic_category': tutorial_topic_category,
}
return render(request, 'tutorials/tutorial_topic_category.html', context)
def topic(request, slug, slug2):
tutorial_category = TutorialCategory.objects.get(slug=slug)
tutorial_topic_category = TutorialTopicCategory.objects.filter(tutorial_category=tutorial_category)
topic = Topic.objects.get(slug=slug2, tutorial_topic_category=tutorial_topic_category)
context = {
'topic': topic,
}
return render(request, 'tutorials/topic.html', context)
urls.py
path("<slug>", views.tutorial_topic_category, name='tutorial-topic-category'),
path("<slug>/<slug2>", views.topic, name='topic')
и как мне передать слаг в моем шаблоне, используя тег шаблона django
<a href = "{% url 'tutorials:topic' category.slug category.slug2 %}">
слаг может обрабатываться по-разному, когда вы делаете с ним get... можете ли вы попробовать указать тип в URL как path("<slug:slug>", views.tutorial_topic_category, name='tutorial-topic-category'), path("<slug:slug>/<slug:slug2>", views.topic, name='topic')






В представлении темы вы используете фильтр, чтобы получить категорию темы учебника. Это возвращает набор запросов, а не один элемент. Когда вы затем используете его для получения «темы», вы запрашиваете на основе этого набора, а не одного эквивалента, что вызывает ошибку. Итак, вместо этого, чтобы использовать только первый из отфильтрованного набора, вы могли бы сказать
topic = Topic.objects.get(slug=slug2, tutorial_topic_category=tutorial_topic_category[0])
...или, если вы хотите использовать полный набор, даже если вы ищете только один предмет
topic = Topic.objects.get(slug=slug2, tutorial_topic_category__in = tutorial_topic_category)
Вам также может понадобиться настроить свой URL-адрес, чтобы slug2 исходил из слага темы, поскольку это модель, которая будет использоваться для поиска экземпляра, например:
<a href = "{% url 'tutorials:topic' category.slug topic.slug2 %}">
теперь он показывает эту ошибку Topic matching query does not exist.
Это говорит о том, что ничто не соответствует вашим критериям для Topic.objects.get(...). Я обновил ответ, указав еще одно соображение о создании вашего URL.
В какой строке ошибка?