2012-07-19 39 views
2

由於缺乏計劃,我發現自己處於一種情況,即必須在模型的後期階段引入一個名爲「Active」的布爾字段這個想法是隻返回在Db上任何查詢都有效的元素。一種可能的方式是編輯我所有的查詢模型,以添加類似於對於在Django模型上的任何查詢,僅對具有活動集的元素執行查詢爲真

Q(active==true) 

這將需要很大的改變。是否有可能使用「類元」我可以設置排序,以便對Db上的任何查詢僅對具有活動集的元素執行爲true。

class Db(models.Model): 
    url = models.TextField() 
    description = models.TextField(blank=True, null=True) 
    active = models.BooleanField()(initial=True) 

    class Meta: 
     ordering = ['-id'] 

回答

0

我想你可以爲你的模型添加新的QuerySet方法,因爲這個snippet

from django.db import models 

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



# Using it in a model: 

from django.db.models.query import QuerySet  

class Entry(models.Model): 
    ... 
    objects = QuerySetManager() 
    ... 
    class QuerySet(QuerySet): 
     def chckactive(self):    
      return self.filter(active=True) 


# Entry.objects.all().chckactive() 
+0

will tr​​y this :) – 2012-07-19 19:00:04

相關問題