python - Django REST Framework 的 APIClient 将 None 作为 'None' 发送

标签 python django django-rest-framework

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

{
    "field": None
}

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

{
    "field": "None"
}

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

有什么方法可以解决或绕过它吗?

这是我的序列化程序

class MyModelSerializer(serializers.ModelSerializer):

    field = serializers.PrimaryKeyRelatedField(
        queryset=OtherModel.objects.all(), required=False, allow_null=True)

还有我在 View 集中的创建方法

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)

也是我的模型类

class MyModel(models.Model):
    field= models.OneToOneField(
        OtherModel, blank=True, null=True)

最佳答案

除了 Kevin 已经说过的之外,您还可以使用参数 format='json' 强制 APIClient 发送 JSON。

参见 documentation .

关于python - Django REST Framework 的 APIClient 将 None 作为 'None' 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677216/

相关文章:

django - 如何使用 Django ORM 将注释字符串转换为 Bool

Django Rest框架快速入门教程错误包含的URLconf 'tutorial.urls'

python - 处理来自 IOS 设备的请求时发生异常

python - 使用 Numpy 生成 ASCII 内核

python - 如何在 Python 中记录类型参数?

python - 渲染图像而不保存

django - 在我的 django 项目中使用 mypy 时出现问题

python - 标准化矩阵python的行

c++ - 优化例程代码示例

django - 键必须是 str、int、float、bool 或 None,而不是builtin_function_or_method