Некоторые проблемы с подтверждением URL в представлениях Django

StackOverflow https://stackoverflow.com/questions/1604987

Вопрос

Мои модели:

История:

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, чтобы вы также получили определенный входной слаг, чтобы вы получили только один объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top