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

时间:2016-05-19 07:45:14

标签: python django django-rest-framework

我需要使用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__)))

但也有例外。

究竟我需要包含什么才能根据需要解决这个问题?

1 个答案:

答案 0 :(得分:2)

查看CurrentUserDefault

  

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

owner = serializers.HiddenField(
    default=serializers.CurrentUserDefault()
)

要使用此功能,您需要pass the request in the context,如下所示:

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