Некоторые проблемы с подтверждением URL в представлениях Django - PullRequest
0 голосов
/ 22 октября 2009

Мои модели:

История:

categories = models.ManyToManyField(Category)

Категория: имя | пробковый

Мои URL:

(r'^(?P<cat_slug>.*)/$', 'news.views.archive_category'),

А в представлениях я использую:

def archive_category(request, cat_slug):
    entry = News.objects.get( categories__slug=cat_slug )
    return render_to_response('news_archive_category.html', {'entry':entry, })

Что-то не так, если у меня есть история двух или более категорий. Пожалуйста, помогите мне. Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2009
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

отредактировано после комментария

0 голосов
/ 22 октября 2009

Что вы хотите, чтобы произошло в этих обстоятельствах? Вы пытаетесь показать список всех записей в категории или только одну?

News.objects.get() будет всегда получать один элемент или выдавать исключение, если более чем один соответствует критериям. Либо вы должны вместо этого использовать filter(), передав QuerySet в шаблон, поэтому вам нужно будет выполнить итерацию; или, добавьте критерий в ваш urlconf, чтобы вы также получили определенный входной слаг, чтобы вы могли получить только один объект.

...