Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何向django查询添加静态用户字段_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何向django查询添加静态用户字段

Python 如何向django查询添加静态用户字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,我需要使用DRF执行一些特殊的序列化/反序列化,但其中一个必需参数是生成查询的用户 AFAIK aserializers.Field实例无权访问ViewSet,因此无法访问ViewSet.request.user owner = serializers.HiddenField( default=serializers.CurrentUserDefault() ) 所以我想我应该将用户作为静态字段添加到queryset中,这样每个记录都可以访问它 qry = qry.annotate(u

我需要使用DRF执行一些特殊的序列化/反序列化,但其中一个必需参数是生成查询的用户

AFAIK a
serializers.Field
实例无权访问
ViewSet
,因此无法访问
ViewSet.request.user

owner = serializers.HiddenField(
    default=serializers.CurrentUserDefault()
)
所以我想我应该将用户作为静态字段添加到queryset中,这样每个记录都可以访问它

qry = qry.annotate(user=Value(user, models.ForeignKey(settings.AUTH_USER_MODEL)))
然而,这给了我

ValueError: Related model 'auth.User' cannot be resolved
我也试过了

q.annotate(user=Value(user, models.ForeignKey(user.__class__)))
但这也是例外

我必须包括哪些内容才能根据需要解决此问题?

请查看:

可用于表示当前用户的默认类。为了使用此功能,在实例化
序列化程序时,
'request'
必须作为上下文字典的一部分提供

owner = serializers.HiddenField(
    default=serializers.CurrentUserDefault()
)
要使用此功能,您需要执行以下操作:

serializer = AccountSerializer(account, context={'request': request})

实际上,这对我来说是开箱即用的<代码>自身。上下文['request']。用户
字段中。to_表示