Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest framework Django:在外键字段中保存字符串时出错_Django Rest Framework - Fatal编程技术网

Django rest framework Django:在外键字段中保存字符串时出错

Django rest framework Django:在外键字段中保存字符串时出错,django-rest-framework,Django Rest Framework,我是Django新手,我想将来自Android应用程序的数据保存到Django服务器。我在Django有两种型号: class Route(models.Model): route_key = models.CharField(max_length=250) name = models.CharField(max_length=250, default='') def __str__(self): return self.route_key 以及: 我

我是Django新手,我想将来自Android应用程序的数据保存到Django服务器。我在Django有两种型号:

class Route(models.Model):
    route_key = models.CharField(max_length=250)
    name = models.CharField(max_length=250, default='')

    def __str__(self):
        return self.route_key
以及:

我有一个序列化程序:

class TrackSerializer(serializers.ModelSerializer):

    class Meta:
        model = Track
        fields = '__all__'
我在views.py的POST方法中获取数据:

class TrackList(APIView):

    def post(self, request):
        serializer = TrackSerializer(data=request.data)
        print(request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
在Android中,我创建了一个JSONObject,这就是我要发送到服务器的内容

问题是,如果我只从Android发送属性'delivery'和'track',我可以保存值而不会出现任何错误,但是如果我也发送'route_key',它会给我400个错误请求,但我正在接收数据

这是我在服务器上收到的,3个字符串

{'delivery': 'Miriam', 'track_route_key': '22', 'track': '(43.30725, -2.010733, 10 jul. 2017 17:40:40)'}
这就是我得到的错误:

[10/Jul/2017 17:40:55] "POST /listroutes/ HTTP/1.1" 400 67
我确信在验证“track\u route\u key”字段时会发生错误。如何将“track\u route\u key”字符串转换为外键并保存此值


提前感谢。

外键
(s)映射到
PrimaryKeyRelatedField
(),因此您不必转换
轨迹路径(track\u route\u Key
)。您确定错误是为了验证该字段吗?更多信息将很有帮助,配置日志记录,它将告诉您问题所在。您还可以尝试在shell中反序列化该数据。您需要显示来自服务器的具体错误消息。我最终成功创建了该对象,但忘了将此行添加到serializer类
track\u route\u key=serializers.PrimaryKeyRelatedField(read\u only=True,many=True)
。但现在,在Django Rest Api视图中,这些字段显示为null。
[10/Jul/2017 17:40:55] "POST /listroutes/ HTTP/1.1" 400 67