dado una clase:En Django, ¿cómo se filtra un QuerySet con búsquedas de campo dinámicas?
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=20)
¿Es posible, y si es así cómo, a tener un QuerySet que los filtros basados en argumentos dinámicos? Por ejemplo:
# Instead of:
Person.objects.filter(name__startswith='B')
# ... and:
Person.objects.filter(name__endswith='B')
# ... is there some way, given:
filter_by = '{0}__{1}'.format('name', 'startswith')
filter_value = 'B'
# ... that you can run the equivalent of this?
Person.objects.filter(filter_by=filter_value)
# ... which will throw an exception, since `filter_by` is not
# an attribute of `Person`.
Solo un aviso rápido de getcha: asegúrese de que las cadenas en los kwargs sean de tipo str no unicode, sino que filter() se quejará. –
¿Lo harás? ¿No coacciona en este punto? – jMyles
Gracias Daniel! Me ayudó. ¿Cómo se llama en Python? ¿Argumento de expansión? No puedo encontrarlo en los documentos. – santiagobasulto