无法分配"&书信电报;位于0x7fb2bc14aa90的django.contrib.auth.models.AnonymousUser对象>&引用;:&引用;Post.由“创建人”创建;必须是一个";“用户”;实例
我正试图以登录用户的身份发布帖子,但当我尝试这样做时,会出现以下错误:无法分配"&书信电报;位于0x7fb2bc14aa90的django.contrib.auth.models.AnonymousUser对象>&引用;:&引用;Post.由“创建人”创建;必须是一个";“用户”;实例,django,django-rest-framework,Django,Django Rest Framework,我正试图以登录用户的身份发布帖子,但当我尝试这样做时,会出现以下错误: Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x7fb2bc14aa90>": "Post.created_by" must be a "User" instance. 意见如下: User = get_user_model() class UserLoginA
Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x7fb2bc14aa90>": "Post.created_by" must be a "User" instance.
意见如下:
User = get_user_model()
class UserLoginAPIView(generics.CreateAPIView):
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.UserLoginSerializer
def post(self, request, *args, **kwargs):
serializer = UserLoginSerializer(data=request.data, context={'request': request})
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)
return Response({"status": status.HTTP_200_OK, "Token": token.key})
class PostAPIView(generics.ListCreateAPIView):
"""PostViewSet
Post API will be used to creating new discussion, listing, and replying to a post
"""
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (permissions.AllowAny,)
def get_queryset(self):
"""
"""
return Post.objects.filter(reply_to__isnull=True)
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=request.user)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
你是怎么提出要求的?Postman?@oluwakayode是的,我在Postman上和API视图中都提出了请求,但都不起作用。您可以尝试在登录时使用Django REST Framework用户界面创建帖子吗?@oluwakayode我有,但我收到的错误与我没有登录时的错误相同。
User = get_user_model()
class UserLoginAPIView(generics.CreateAPIView):
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.UserLoginSerializer
def post(self, request, *args, **kwargs):
serializer = UserLoginSerializer(data=request.data, context={'request': request})
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)
return Response({"status": status.HTTP_200_OK, "Token": token.key})
class PostAPIView(generics.ListCreateAPIView):
"""PostViewSet
Post API will be used to creating new discussion, listing, and replying to a post
"""
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (permissions.AllowAny,)
def get_queryset(self):
"""
"""
return Post.objects.filter(reply_to__isnull=True)
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=request.user)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)