通过django中的_set选项访问自定义管理器

时间:2012-07-23 09:17:20

标签: django django-models

我有两个型号和一个自定义管理器:

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。 当我尝试通过我的视图访问自定义管理器时,同样的问题就出现了。

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

1 个答案:

答案 0 :(得分: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