我有一个继承自ModelSerializer
的序列化程序,看起来像这样:
class MySerializer(serializers.ModelSerializer)
set_favourite_books = serializers.PrimaryKeyRelatedField(source="favourite_books", many=True, required=False, write_only=True)
set_favourite_movies = serializers.PrimaryKeyRelatedField(source="favourite_movies", many=True, required=False, write_only=True)
class Meta:
model = models.User
fields = ('set_favourite_books', 'set_favourite_movies')
如果我发布这个,它会正常工作:
{
'set_favourite_books': [1, 2, 3]
'set_favourite_movies': [1, 2, 3]
}
但是,如果我尝试仅更新其中一个字段(不完全发布其他字段),如下所示:
{
'set_favourite_books': [1, 2, 3]
}
它会设置书籍,但要清除电影。
如果根本没有提交set_favourite_movies
字段,我怎样才能维护电影?
答案 0 :(得分:1)
DRF更新模型以更新PUT
上所有字段的默认行为,PATCH
上仅提供的字段(使用ModelViewSet
时请参阅UpdateModelMixin
){{ 1}}更新完整的对象。如果要进行部分更新,请仅使用要更新的字段PUT
。