Einige Probleme mit der Bestätigung der URLs in Django Ansichten
-
05-07-2019 - |
Frage
Meine Modelle:
Story:
categories = models.ManyToManyField(Category)
Kategorie: Name | Slug
Mein Urls:
(r'^(?P<cat_slug>.*)/$', 'news.views.archive_category'),
Und in Ansichten , die ich benutze:
def archive_category(request, cat_slug):
entry = News.objects.get( categories__slug=cat_slug )
return render_to_response('news_archive_category.html', {'entry':entry, })
Es hat etwas falsch, wenn ich eine Geschichte von zwei oder mehr Kategorie haben. Bitte hilf mir. Vielen Dank!
Lösung
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
bearbeiten nach Kommentar
Andere Tipps
Was wollen Sie unter diesen Umständen geschehen? Versuchen Sie, eine Liste aller Einträge in einer Kategorie anzuzeigen, oder einfach nur ein?
News.objects.get()
wird immer ein einzelnes Element erhalten, oder eine Ausnahme auslösen, wenn es mehr als einen die Kriterien sind übereinstimmen. Entweder Sie sollten stattdessen verwenden filter()
, eine QuerySet an der Vorlage vorbei, so dass Sie brauchen, um durchlaufen; oder fügen Sie ein Kriterium, um Ihre URLconf so, dass Sie den spezifischen Eintrag Butzen sowie zu bekommen, so dass Sie nur ein Objekt erhalten.