Django模型中的默认过滤器

Sim*_*ays 9 python django model

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

就像是:

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

    class Meta:
        ordering = ['-timestamp']
        filtering = [active=True]
Run Code Online (Sandbox Code Playgroud)

Pav*_*sov 29

你必须覆盖经理:

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']
Run Code Online (Sandbox Code Playgroud)

get_querysetget_query_set的Django 1.6之前

  • 我不确定这如何回答这个问题,因为它不是一个可以覆盖的“默认”过滤器,而实际上是对象的永久子集。 (2认同)