non_field_errors:[“预期项目列表,但类型为" dict"."] [英] non_field_errors : ["Expected a list of items but got type "dict"."]

查看:88
本文介绍了non_field_errors:[“预期项目列表,但类型为" dict"."]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用websocket frontend(angular)backend(Django)创建实时聊天应用程序.我想将消息存储到db(mySql)中.当我尝试将消息从angular存储到django时,它给我错误:

I create realtime chat application using websocket frontend(angular) backend(Django).. I want to store messages in to db(mySql).. when I trying to store message from angular to django.. it give me error:

non_field_errors:
["Expected a list of items but got type "dict"."]

那怎么了?

model.py

class msg(models.Model):
    name = models.ForeignKey(User, on_delete=models.CASCADE)
    receiver = models.CharField(max_length=20)
    text = models.CharField(max_length=1200)
    myDate = models.DateTimeField()

serializer.py

class MesSerializer(serializers.ModelSerializer):
    name = serializers.SlugRelatedField(many=False, slug_field='name', queryset=User.objects.all())
    class Meta:
        model = msg
        fields = '__all__'

view.py

class msg_list(APIView):
    def get(self, request, format=None):
        mes = msg.objects.all()
        serializer = MesSerializer(mes, many=True)  # convert into JSON
        return Response(serializer.data)

    def post(self, request, formate = None):
        serializer = MesSerializer(data=request.data, many = True) #type list
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

推荐答案

麻烦不在于the.这是因为您在将数据传递给序列化程序时在视图中使用了 many = True ,但实际上您只发送了一条消息-这就是为什么它是字典而不是列表的原因.删除该参数.

The trouble is not with the slug. It is that you have used many = True in the view when you pass the data to the serializer, but you are in fact only sending a single message - which is why it is a dict and not a list. Remove that parameter.

def post(self, request, formate = None):
    serializer = MesSerializer(data=request.data)

这篇关于non_field_errors:[“预期项目列表,但类型为" dict"."]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆