我有一个Model
和ModelSerializer
与这个领域:
models.朋友:
leftovers_from = models.ForeignKey('DayPlanning', null=True, blank=True, related_name='extra_for', on_delete=models.CASCADE)
serialize认识.朋友:
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
,但结果是This field cannot be empty
或PK 0 not found
。
如何使用PATCH请求清除此字段?
谢谢!
请注意,required
表示可以省略该字段以进行创建或“完整”更新。补丁绕过required
字段以实现部分更新。
因此,您需要将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}
要清除关系,应将值设置为None
。由于您特别提到了PATCH
方法,请确保您也了解partial
参数:http://www.django-rest-framework.org/api-guide/serializers/#partial-updates