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

时间:2017-07-10 16:17:17

标签: 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

class Track(models.Model):
    track_route_key = models.ForeignKey(Route, on_delete=models.CASCADE, null=True)
    delivery = models.CharField(max_length=250, default='')
    track = models.CharField(max_length=10000)

    def __str__(self):
        return self.delivery

我有这个序列化器:

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,并且是我发送给服务器的。

问题是,如果我只发送属性' delivery'和'追踪'从Android,我可以保存值没有任何错误,但如果我也发送' 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_route_key'时会发生错误。领域。如何转换' track_route_key'字符串到外键并保存此值?

提前谢谢。

0 个答案:

没有答案