Django在模型中添加了常见条件

时间:2016-10-17 14:26:43

标签: python django

我有模特

class QuerySetManager(models.Manager):
    def get_query_set(self):
        return self.model.QuerySet(self.model)

class Post(models.Model):
    objects = QuerySetManager()
    STATUS = (
         (1, 'PENDING'),
         (2, 'ACTIVE'),
    )
    title = models.CharField(max_length=512,blank=False,null=True)
    status = models.IntegerField(default=1,choices=STATUS)
    class QuerySet(models.query.QuerySet):
        def active(self):
            return self.filter(status=2)

当我尝试以这种方式访问​​时

Post.objects.active().filter(other_condition='xxx').all()

它抛出错误'QuerySetManager' object has no attribute 'active'

任何人都可以帮我实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

我无法理解你在这里所做的一切。让管理员使用相同的方法返回查询集的方法是使用as_manager classmethod

class PostQuerySet(models.QuerySet):
    def active(self):
        return self.filter(status=2)

class Post(models.Model):
    objects = PostQuerySet.as_manager()