我希望我的模型能够由当前用户自动过滤。
我这样做是通过定义:
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
将无法在此处提供帮助。