Другой вариант заключается в том, что если у вас есть фильтр, который всегда необходимо применить, чтобы добавить custom manager на данной модели, который всегда применяет фильтр результаты возвратили.
Хорошим примером этого является Event
модель, где 90% запросов вы делаете на модели, которую вы собираетесь хотите что-то вроде Event.objects.filter(date__gte=now)
, то вы обычно заинтересованы в Events
, которые будущие. Это будет выглядеть так:
class EventManager(models.Manager):
def get_query_set(self):
now = datetime.now()
return super(EventManager,self).get_query_set().filter(date__gte=now)
А в модели:
class Event(models.Model):
...
objects = EventManager()
Но опять же, это относится и тот же фильтр против всех запросов по умолчанию делается на Event
модели и поэтому не столь гибкая часть описанные выше.
Спасибо за прояснение концепции дизайна django. Я использую подход метода модели. – Ber 2008-10-22 00:25:25
Привет, народ, сейчас 2014! Примерно через 6 лет библиотеки JS достигли огромного прогресса, и фильтрация не экстремально большого количества данных должна быть выполнена на стороне клиента с поддержкой некоторой красивой библиотеки сценариев java или, по крайней мере, AJAX-ed. – andi 2014-05-12 18:37:30