Некоторые проблемы с подтверждением URL в представлениях Django
-
05-07-2019 - |
Вопрос
Мои модели:
История:
categories = models.ManyToManyField(Category)
Категория: имя | пробковый р>
Мои URL:
(r'^(?P<cat_slug>.*)/
И в просмотрах я использую:
def archive_category(request, cat_slug):
entry = News.objects.get( categories__slug=cat_slug )
return render_to_response('news_archive_category.html', {'entry':entry, })
Это неправильно, если у меня есть история двух или более категорий. Пожалуйста, помогите мне. Большое спасибо!
, 'news.views.archive_category'),
И в просмотрах я использую:
<*>Это неправильно, если у меня есть история двух или более категорий. Пожалуйста, помогите мне. Большое спасибо!
Решение
category = Category.objects.filter(slug=cat_slug)#get the category requested
#now get all the entries which have that category
entries = News.objects.filter(categories__in=category)#because of the many2many use __in
отредактировано после комментария
Другие советы
Что вы хотите, чтобы произошло в этих обстоятельствах? Вы пытаетесь показать список всех записей в категории или только одну?
News.objects.get ()
всегда получит один элемент или сгенерирует исключение, если более чем один соответствует критериям. Либо вы должны использовать вместо этого filter ()
, передав QuerySet в шаблон, так что вам нужно будет выполнить итерацию; или, добавьте критерий в ваш urlconf, чтобы вы также получили определенный входной слаг, чтобы вы получили только один объект.