Django在mod中添加公共条件

2024-09-28 03:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有模特儿

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'

有人能帮我做到这一点吗?你知道吗


Tags: selfmodelreturnobjectsmodelsdefstatusfilter
1条回答
网友
1楼 · 发布于 2024-09-28 03:18:59

我完全不明白你在这里干什么。让管理器返回具有相同方法的queryset的方法是使用^{} classmethod。你知道吗

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

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

相关问题 更多 >

    热门问题