No Django, como filtrar um QuerySet com pesquisas de campo dinâmicas?

| | | | | | | | | |

Dada uma classe:

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

É possível, e se sim como, ter um QuerySet que filtre com base em argumentos dinâmicos? Por exemplo:

 # Em vez de: Person.objects.filter(name__startswith="B") # ... e: Person.objects.filter(name__endswith="B") # .. existe alguma maneira, dado: filter_by = "{0}__{1}".format("name", "startswith") filter_value = "B" # ... que você possa executar o equivalente a isso? Person.objects.filter(filter_by=filter_value) # ... que lançará uma exceção, já que `filter_by` não é # um atributo de `Person`.