La otra opción es que si tiene un filtro que siempre desea aplicar, agregue un administrador personalizado en el modelo en cuestión que siempre aplica el filtro a los resultados devueltos.
Un buen ejemplo de esto es un Event
modelo, donde para el 90% de las consultas que haces en el modelo vas a querer algo como Event.objects.filter(date__gte=now)
, es decir, normalmente estás interesado en Events
las próximas. Esto se vería así:
class EventManager(models.Manager):
def get_query_set(self):
now = datetime.now()
return super(EventManager,self).get_query_set().filter(date__gte=now)
Y en el modelo:
class Event(models.Model):
...
objects = EventManager()
Pero, de nuevo, esto aplica el mismo filtro a todas las consultas predeterminadas realizadas en el Event
modelo y, por lo tanto, algunas de las técnicas descritas anteriormente no son tan flexibles.