2016-10-17 8 views
0

に共通する条件を追加私が持っているモデル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'

誰もがこれを達成するために私を助けることができますか?

+0

「QuerySetManager」には「アクティブ」がないためです。 'Post.QuerySet()。active()'と呼ぶことができます。しかし、主なものはです。あなたは何を達成しようとしていますか? –

答えて

0

ここで何をやっているのか分かりません。マネージャーに同じ方法でクエリセットを返す方法は、as_manager classmethodを使用することです。

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

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

私は間違っているいくつかの他の解決策を試してみましたが、あなたの理解は正解です – overflow