Django REST:Auth用户未传递给序列化程序错误 - 需要字段

时间:2018-03-04 16:13:42

标签: python django django-rest-framework

我不确定我做错了什么,但经过身份验证的用户未在序列化程序中注册。

Models.py

class PostViewSet(viewsets.ModelViewSet):

    serializer_class = PostSerializer

    permission_classes = (
        permissions.IsAuthenticatedOrReadOnly,
        IsOwnerOrReadOnly, )

    def perform_create(self, serializer):
        serializer.save(posted_by=self.request.user)

Serializers.py

serializer.save(posted_by=self.request.user)

views.py

{
    "posted_by": [
        "This field is required."
    ]
}

我不明白为什么create没有按预期工作。它应传递有关该字段的必要信息。

当我发出POST请求时,我收到错误

posted_by

我认为这与序列化程序中的validated_data方法有关。出于某种原因,PolylineOptions rectOptions = new PolylineOptions(); rectOptions.color(R.color.colorPrimary); String[][] lineInformation = ((MyApplication)getApplication()).getLineInformation(line); for (int i=0; i<lineInformation.length; i++){ rectOptions.add(new LatLng(Double.parseDouble(lineInformation[i][0]),Double.parseDouble(lineInformation[i][1]))); } 中没有BSTR pszRoot,pszUserName,pszPassword; pszRoot = ::SysAllocString(L"\\\\172.21.111.250\\ROOT\\cimv2"); pszUserName = ::SysAllocString(L"Administrator"); pszPassword = ::SysAllocString(L"qwerty1233"); (或类似的东西)。我想知道幕后究竟发生了什么。

1 个答案:

答案 0 :(得分:2)

只需将posted_by指定为只读字段。

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post
        fields = '__all__'
        read_only_fields = ('posted_by', )