我一直在遵循http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/上的教程(这很好),但我已经到了最后,我正在运行命令
a-http管理员:密码123 POSThttp://127.0.0.1:8000/snippets/code=“打印789”
它给了我一个错误:
HTTP/1.1 400 Bad Request Allow: GET, POST, HEAD, OPTIONS Content-Length: 37 Content-Type: application/json Date: Wed, 28 Feb 2018 18:29:15 GMT Server: WSGIServer/0.2 CPython/3.6.3 Vary: Accept, Cookie X-Frame-Options: SAMEORIGIN
{ "owner": [ "This field is required." ] }
owner字段在browseableapi上也可见,为我创建的所有用户提供了选项。当保存它时(无论是浏览器还是命令行),它确实保存了发出请求的用户,以便部件是正确的。我认为它不应该在可浏览的api上可见,也不应该在api调用中被要求,因为它从请求中得到了它。在
这是我的代码:
在视图.py公司名称:
class SnippetList(generics.ListCreateAPIView):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
在模型.py公司名称:
^{pr2}$在序列化程序.py在
class SnippetSerializer(serializers.ModelSerializer):
class Meta:
model = Snippet
fields = ('id', 'title', 'code', 'linenos', 'language', 'style', 'owner')
owner = serializers.ReadOnlyField(source='owner.username')
在序列化程序中,您将字段定义为类的属性,而不是在Meta中。试试这个:
必须在序列化程序验证的数据中分配值。在
相关问题 更多 >
编程相关推荐