Alcuni problemi con la conferma degli URL nelle viste Django
-
05-07-2019 - |
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!
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.