from django.db import models
class QuerySetManager(models.Manager):
def get_query_set(self):
return self.model.QuerySet(self.model)
def __getattr__(self, attr, *args):
return getattr(self.get_query_set(), attr, *args)Внутрь класса где-то рекомендовалось добавить полем "use_for_related_fields=True", но работает без него. Зато не работает без __getattr__, пишет: 'RelatedManager' object has no attribute 'useractive', вопреки ещё какой-то рекомендации из инета. В итоге имеем некий хак.Используется как-то так:
class Clazz(models.Model):
...
objects = QuerySetManager()
...
class QuerySet(models.query.QuerySet):
def useractive(self,date):
return self.filter( Q(active=True) & (Q(date__isnull=True)|Q(date__gte=date)) )И потом во вьюшках:Clazz.objects.useractive(now).order_by('date')
Комментариев нет:
Отправить комментарий