如何根据返回布尔值的模型类上的方法结果过滤查询集?

时间:2014-12-26 02:10:54

标签: python django django-orm

作为我的一个模型类的成员函数,我有一个返回布尔值的is_visible(self, user)方法。根据定义,它将请求用户(Django User模型)作为输入。

我希望能够根据对此方法的响应来过滤查询集。如何将此函数用作查询集过滤器?

对于上下文,这是我的is_visible实现:

    def is_visible(self, user):
        if self.status.status_internal == "open":
            return True
        if self.owner == user:
            return true

        participations = Participation.objects.filter(event__id=self.id, participant__id=user.id)
        if len(participations) > 0:
            return True

        if self.status.status_internal == "invite":
            return True

        return False

1 个答案:

答案 0 :(得分:1)

您无法使用python函数过滤查询集。你必须重复"此代码使用Q objects过滤您的对象。