Consulta...

15 views
Skip to first unread message

Marcelo A. Robin

unread,
Oct 27, 2022, 10:38:09 AM10/27/22
to Django-es
Estoy haciendo un filtro por categorías y hago lo siguiente:

def category(request, category_id):
     try:
          category = get_object_or_404(Category, id=category_id)
          contador = Post.objects.filter(category=category).count()
      except:
            contador = 0

       return render(request, 'core/category.html', {'category':category, 'contador':contador})


despues en la vista hago lo siguiente: 

{% if contador == 0 %}
<div class="alert alert-danger" role="alert">
<strong>No hay publicaciones que posean la Categoría {{ category }}</strong>
</div>
{% endif %}


Funcionar, funciona pero no me convence tener que usar ese flag contador para saber si hay registros o no... Cómo podría saber si ese filtro me esta devolviendo registros sin necesidad de usar ese flag ?
Desde ya muchas gracias !!!

carlos

unread,
Oct 27, 2022, 11:53:18 AM10/27/22
to djan...@googlegroups.com
Hola, podrias usar

category = get_object_or_404(Category, id=category_id)
posts = Post.objects.filter(category=category)

con eso ya tendrias los post filtrados con la categoría que le enviastes por parámetro
y con for en los template saber si tiene datos o no

<ul>
{% for post in post %}
    <li>{{ post.title }}</li>
{% empty %}
    <li>Lo sentimos, no existe posts con esa categoria.</li>
{% endfor %}
</ul>

si queres hacer un conteo de cuantos posts encontro podes usar un templatetags en tu template
https://docs.djangoproject.com/en/4.1/ref/templates/builtins/#length
{{posts|length}}

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-es/ea3725d2-8786-4980-a4a8-ab3ebfbe09bfn%40googlegroups.com.


--
att.
Carlos Rocha

William Bolívar

unread,
Oct 27, 2022, 11:58:36 AM10/27/22
to djan...@googlegroups.com
creo que si usas django rest te puede ayudar un monton con todos esos temas.
https://www.django-rest-framework.org/api-guide/filtering/

sino de ultima puedes buscar extender un custom filter del core de django para algo mas prolijo
https://django-filter.readthedocs.io/en/stable/guide/usage.html#the-filter

Marcelo Robin

unread,
Oct 27, 2022, 12:20:00 PM10/27/22
to djan...@googlegroups.com
uhhhh me encantó el {% empty %} !!! no sabía eso... Muchas gracias Carlos !!!

Marcelo Robin

unread,
Oct 27, 2022, 12:40:00 PM10/27/22
to djan...@googlegroups.com
Gracias William !!! voy a revisar esa documentación !!! muy interesante !!! 

Iago Otero

unread,
Oct 27, 2022, 5:14:44 PM10/27/22
to djan...@googlegroups.com
yo para hacer filtros tengo usado django-filters...echale un ojo tb si te interesa

Reply all
Reply to author
Forward
0 new messages