2012-07-23 44 views
0
我有两个模型和一个自定义的经理

通过_set选项访问自定义的经理在Django

class ActiveModelAManager(models.Manager): 
    def get_query_set(self): 
     return super(ActiveModelAManager,self).get_query_set().filter(active = True) 

class ModelA(models.Model): 
    name = CharField(....) 
    active = BooleanField() 

    active_models = ActiveModelAManager() 
    objects = models.Manager() 

class ModelB(models.Model): 
    modelA = ForeignKey(ModelA) 
在我看来,我传递MODELA的模板,我想访问ModelB_set但使用我的active_models

经理而不是对象?

所以,如果我这样做:

{{ ModelB.modelb_set.all }} 

我访问对象管理器,但我想要访问的active_models。 当我尝试通过我的视图访问自定义管理器时,也出现同样的问题。

任何想法我怎么能做到这一点?

+0

难道我的回答可以帮助您? – 2012-07-24 21:51:11

+0

为了所有活跃的StackOverflow用户,如果您得到可行的解决方案,请将答案标记为已接受,以便人们不必花费时间回答问题,如果不再需要答案。 – 2012-08-01 06:50:00

回答

1

不知道我的问题是否正确,但为了查询引用活动ModelA对象的modelB对象,在您的视图中只需编写。

active_modelA_objects = ModelA.active_models.all().values_list('pk', flat=True) 
modelB_objects_with_active_modelA = ModelB.objects.filter(modelA__in=active_modelA_objects) 

相关文档:

values-list

__in