小编emp*_*ash的帖子

Django REST Framework 的 APIClient 将 None 发送为“None”

在我的测试中,我发送通过序列化器传递的模型的模拟数据。看起来serializer.data像这样

{
    "field": None
}
Run Code Online (Sandbox Code Playgroud)

但是,我的 API 接收的数据格式如下

{
    "field": "None"
}
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为我试图指定一个允许为空的外键。不应该APIClient将 None 转换为 null 而不是 unicode 吗?

有什么办法可以解决这个问题或绕过它吗?

这是我的序列化器

class MyModelSerializer(serializers.ModelSerializer):

    field = serializers.PrimaryKeyRelatedField(
        queryset=OtherModel.objects.all(), required=False, allow_null=True)
Run Code Online (Sandbox Code Playgroud)

和我在视图集中的创建方法

def create(self, request):
    model = MyModel()
    serializer = MyModelSerializer(model, data=request.data)
    if serializer.is_valid():
        serializer.save(owner=request.user)
        return Response(serializer.data, status=201)
    return Response(serializer.errors, status=406)
Run Code Online (Sandbox Code Playgroud)

还有我的模特班

class MyModel(models.Model):
    field= models.OneToOneField(
        OtherModel, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

3
推荐指数
1
解决办法
3121
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1