2013-02-17 112 views
4

可以在Django模型中设置默认过滤器吗?Django模型中的默认过滤器

喜欢的东西:

class MyModel(models.Model): 
    timestamp = models.DateTimeField(default=datetime.utcnow) 
    active = models.BooleanField(default=True) 

    class Meta: 
     ordering = ['-timestamp'] 
     filtering = [active=True] 

回答

19

你必须重写manager

class MyModelManager(models.Manager): 
    def get_queryset(self): 
     return super(MyModelManager, self).get_queryset().filter(active=True) 

class MyModel(models.Model): 
    timestamp = models.DateTimeField(default=datetime.utcnow) 
    active = models.BooleanField(default=True) 

    objects = MyModelManager() 

    class Meta: 
     ordering = ['-timestamp'] 

get_querysetget_query_set Django的前1.6

+0

get_query_set实际上get_queryset – MarZab 2015-05-27 14:40:50

+0

自1.6,是, 谢谢 – 2015-05-27 16:39:07