Question

Mes modèles:

Histoire:

categories = models.ManyToManyField(Category)

Catégorie: nom | limace

Mes URL:

(r'^(?P<cat_slug>.*)/

Et dans les vues , j'utilise:

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

Quelque chose ne va pas si j'ai une histoire de deux catégories ou plus. Aidez-moi, s'il vous plaît. Merci beaucoup!

, 'news.views.archive_category'),

Et dans les vues , j'utilise:

<*>

Quelque chose ne va pas si j'ai une histoire de deux catégories ou plus. Aidez-moi, s'il vous plaît. Merci beaucoup!

Était-ce utile?

La solution

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

édité après le commentaire

Autres conseils

Que voulez-vous qu'il se passe dans cette situation? Essayez-vous d’afficher une liste de toutes les entrées d’une catégorie ou d’une seule?

News.objects.get () obtiendra toujours un seul élément ou lèvera une exception s'il en existe plusieurs qui correspondent aux critères. Soit vous devez utiliser filter () à la place, en transmettant un QuerySet au modèle, de sorte que vous devrez effectuer une itération; ou, ajoutez un critère à votre urlconf pour que vous obteniez également le slug d’entrée spécifique, de sorte que vous n’obteniez qu’un seul objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top