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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top