Algunos problemas con la confirmación de las URL en las vistas de Django
-
05-07-2019 - |
Pregunta
Mis modelos:
Historia:
categories = models.ManyToManyField(Category)
Categoría: nombre | babosa
Mis URL:
(r'^(?P<cat_slug>.*)/
Y en vistas , uso:
def archive_category(request, cat_slug):
entry = News.objects.get( categories__slug=cat_slug )
return render_to_response('news_archive_category.html', {'entry':entry, })
Tiene algo de malo si tengo una historia de dos o más categorías. Por favor, ayúdame. Muchas gracias!
, 'news.views.archive_category'),
Y en vistas , uso:
<*>Tiene algo de malo si tengo una historia de dos o más categorías. Por favor, ayúdame. Muchas gracias!
Solución
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
editado después del comentario
Otros consejos
¿Qué quieres que pase en estas circunstancias? ¿Estás tratando de mostrar una lista de todas las entradas en una categoría, o solo una?
News.objects.get ()
siempre obtendrá un solo elemento o generará una excepción si hay más de uno que coincida con los criterios. En su lugar, debe usar filter ()
, pasando un QuerySet a la plantilla, por lo que deberá iterar; o bien, agregue un criterio a su urlconf para que también obtenga la ficha de entrada específica, de modo que solo obtenga un objeto.