Django自定义管理器过滤器查询集(按参数)

时间:2017-01-19 16:50:48

标签: python django django-models

我希望我的模型能够由当前用户自动过滤。

我这样做是通过定义:

class UserFilterManager(models.Manager):
    def get_queryset(self):
        return super(UserFilterManager, self).get_queryset().filter( owner=get_current_user() )

其中get_current_user()是一个中间件,它从传递给Django的request中提取当前用户。

但是,我需要使用Celery中没有经过中间件的模型。在这些情况下

MyModel.objects.all()

需要成为

MyModel.objects.filter(user=<some user>)

为了避免因忘记按用户过滤而导致的错误查询,我希望模型/ manager / queryset在user上没有过滤器的情况下执行查询(任何查询)时断言。

有没有办法实现这个目标? 从我看到的get_queryset()无法接收参数,models.QuerySet将无法在此处提供帮助。

0 个答案:

没有答案