【发布时间】:2018-07-25 08:45:15
【问题描述】:
我使用 websocket frontend(angular) backend(Django) 创建实时聊天应用程序。我想将消息存储到 db(mySql).. 当我尝试将消息从 angular 存储到 django.. 它给我错误:
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)
【问题讨论】:
-
你需要将输入作为
{"name":['adrian','yousof',..],"reciever":'test","text":"something","myDate":"2018-07-05"} -
我的输入正在传递 {name: "Erika", text: "hiii", receiver: "priyal", myDate: "2018-07-25T08:56:43.510Z"}
-
就像你说的那样已经过去了
-
名称值必须在列表中,因为 slugrelatedfield 需要项目列表,即使它是单个的