我试图将CurrentUserDefault
类用于一个序列化程序。在
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
文件上说:
In order to use this, the 'request' must have been provided as part of the context dictionary when instantiating the serializer.
我不知道如何创建序列化程序。在视图中,我使用以下内容创建所有序列化程序:
^{pr2}$所以我试图:
context = dict(request.data)
context['request'] = request
serializer = NewModelSerializer(data=context)
以及
context['request'] = {'user': request.user}
两种情况下的误差是相同的:
Exception Type: KeyError
Exception Value: 'request'
on:
/Users/Alfonso/virtualenvs/sports/lib/python2.7/site-packages/rest_framework/fields.py in set_context
self.user = serializer_field.context['request'].user
我还试着用相同的运气对字典(u'request'
)的键进行编码。在
有没有更好的方法将记录的用户传递给序列化程序?在
我使用的是Django REST framework3.0和python2.7.6
Django-REST框架使用中央序列化程序处理对象的序列化和反序列化。有时为了帮助反序列化和序列化,它需要一些上下文,比如当前使用的}。您通常不必担心它,因为通用视图会自动为您处理它。这在"Including extra context"下的文档中有介绍,它利用了序列化程序的可选
view
或{context
参数。在手动使用序列化程序时,必须将上下文作为字典传入。有些字段需要特定的键,但在大多数情况下,您只需要
request
键作为对传入请求的引用。这将允许HyperlinkedRelatedField
生成一个完整的URL,以及像CurrentUserDefault
这样的附加功能按预期执行。在上下文字典在泛型视图上也可用作}。在
get_serializer_context
方法,它将用常用的键自动填充字典,例如request
和{相关问题 更多 >
编程相关推荐