template - inclusion tags django
Django: filtrado en propiedades de clave externa (2)
Intento filtrar una tabla en Django en función del valor de un campo particular de una clave externa.
Por ejemplo, tengo dos modelos:
# models.py
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey(''Project'')
class Project(models.Model):
name = models.TextField(max_length=150)
Me gustaría filtrar mi lista de activos en función del nombre del proyecto asociado.
Actualmente estoy realizando dos consultas:
# views.py
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter( desc__contains=filter, project__in=project_list).order_by(''desc'')
Me pregunto si hay una forma de especificar este tipo de filtrado en la consulta principal.
Esto ha sido posible desde que la rama queryset-refactor
aterrizó antes de la 1.0. El boleto 4088 expuso el problema. Esto debería funcionar:
Asset.objects.filter(
desc__contains=filter,
project__name__contains="Foo").order_by("desc")
La documentación de Django Many-to-one tiene este y otros ejemplos de las siguientes claves foráneas que usan la API modelo.
Asset.objects.filter( project__name__contains="Foo" )