En Django, ¿cómo se filtra un QuerySet con búsquedas de campos dinámicos?

| | | | | | | | | |

Dada una clase:

desde django.db import models class Person(models.Model): name = models.CharField(max_length=20) 

¿Es posible, y si es así, cómo, tener un QuerySet que filtre en función de argumentos dinámicos? Por ejemplo:

 # En lugar de: Person.objects.filter(name__startswith="B") # ... y: Person.objects.filter(name__endswith="B") # .. ¿Hay alguna manera, dado: filter_by = "{0}__{1}".format("name", "startswith") filter_value = "B" # ... que puede ejecutar el equivalente de esto? Person.objects.filter(filter_by=filter_value) # ... lo que generará una excepción, ya que `filter_by` no es # un atributo de `Person`.