Django休息框架: How to set a field to null via PATCH request?

标签 django rest django-rest-framework

我有一个带有此字段的 ModelModelSerializer:

模型.py:

leftovers_from = models.ForeignKey('DayPlanning', null=True, blank=True, related_name='extra_for', on_delete=models.CASCADE)

序列化器.py:

leftovers_from_id = serializers.PrimaryKeyRelatedField(queryset=DayPlanning.objects.all(), source='leftovers_from', write_only=True, required=False)

现在我可以使用 POST 请求完美地为此模型创建一个新对象(无论该字段是否为 null/None/empty。)

但是,当我尝试使用 PATCH 更新该字段时,我只能使用不同的值(外部模型的 PK)来更新它。我尝试将 null''0-1 传递给 leftovers_from_id,但结果是此字段不能为空未找到 PK 0

如何使用 PATCH 请求清除此字段?

谢谢!

最佳答案

请注意,必需 表示创建或“完整”更新时可以省略该字段。补丁绕过必填字段来实现部分更新。

因此您需要设置allow_null True 的参数:

leftovers_from_id = serializers.PrimaryKeyRelatedField(
    queryset=DayPlanning.objects.all(),
    source='leftovers_from', write_only=True,
    required=False, allow_null=True,
)

然后您应该能够使用以下内容进行修补:

{'leftovers_from_id': null}

关于Django休息框架: How to set a field to null via PATCH request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076194/

相关文章:

Django-rest-framework 序列化程序 : Create an object with foreign objects at the same time

python - 如何使用 aws cli boto3 在 AWS EC2 中使用用户数据安装 python3 和 Django

python - 通过创建可重用模板来最大限度地减少代码重复

python - 多文件上传 DRF

spring-boot - Kotlin Spring Boot Webflux 使用 @Valid 注解验证 @RequestBody

用于大文件上传的 Java REST API

django - ModelSerializer 在 Django REST 框架中非常慢

python - 如何在 App Engine 上使用 Django 接收百分比编码的斜杠?

python - AWS EC2 未在默认端口上运行 Web 服务器

java - 如何使用 java 查找响应负载 (JSON) 大小