0

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

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

知道我该怎么做吗?

4

1 回答 1

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)

相关文档:

值列表

__在

于 2012-07-23T10:49:36.783 回答