我需要使用DRF执行一些特殊的序列化/反序列化,但其中一个必需参数是生成查询的用户。
AFAIK serializers.Field
个实例无法访问ViewSet
,因此无法访问ViewSet.request.user
。
所以我想我只是将用户作为静态字段添加到查询集中,以便每条记录都可以访问它。
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__)))
但也有例外。
究竟我需要包含什么才能根据需要解决这个问题?
答案 0 :(得分:2)
可用于表示当前用户的默认类。为了使用它,
'request'
必须在实例化serializer
时作为上下文字典的一部分提供。owner = serializers.HiddenField( default=serializers.CurrentUserDefault() )
要使用此功能,您需要pass the request in the context,如下所示:
serializer = AccountSerializer(account, context={'request': request})