Rob*_*sma 6 django rest django-rest-framework
我有一个Model和ModelSerializer这个领域:
models.py:
leftovers_from = models.ForeignKey('DayPlanning', null=True, blank=True, related_name='extra_for', on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
serializers.py:
leftovers_from_id = serializers.PrimaryKeyRelatedField(queryset=DayPlanning.objects.all(), source='leftovers_from', write_only=True, required=False)
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用POST请求完美地为此模型创建一个新对象(无论是否有此字段为null/ None/为空).
但是,当我尝试使用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,
)
Run Code Online (Sandbox Code Playgroud)
然后你应该能够补丁:
{'leftovers_from_id': null}
Run Code Online (Sandbox Code Playgroud)