我有一个带有此字段的 Model
和 ModelSerializer
:
模型.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/