Domanda

I miei modelli:

Storia:

categories = models.ManyToManyField(Category)

Categoria: nome | slug

I miei URL:

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

E in visualizzazioni , utilizzo:

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

Ha qualcosa di sbagliato se ho una storia di due o più categorie. Mi aiuti per favore. Mille grazie!

, 'news.views.archive_category'),

E in visualizzazioni , utilizzo:

<*>

Ha qualcosa di sbagliato se ho una storia di due o più categorie. Mi aiuti per favore. Mille grazie!

È stato utile?

Soluzione

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

modificato dopo il commento

Altri suggerimenti

Cosa vuoi che accada in questa circostanza? Stai cercando di mostrare un elenco di tutte le voci in una categoria o solo una?

News.objects.get () sempre otterrà un singolo elemento o genererà un'eccezione se ce ne sono più di uno corrispondente ai criteri. O dovresti usare invece filter () , passando un QuerySet al template, quindi dovrai scorrere attraverso; oppure aggiungi un criterio al tuo urlconf in modo da ottenere anche la lumaca di voce specifica, in modo da ottenere un solo oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top