18

Django モデルでデフォルトのフィルターを設定することは可能ですか?

何かのようなもの:

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

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

2 に答える 2

39

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_setDjango 1.6より前でした

于 2013-02-17T19:30:34.590 に答える