如果没有设置,Django Rest Framework PrimaryKeyRelatedField清除

时间:2014-05-27 10:23:02

标签: django django-rest-framework

我有一个继承自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字段,我怎样才能维护电影?

1 个答案:

答案 0 :(得分:1)

DRF更新模型以更新PUT上所有字段的默认行为,PATCH上仅提供的字段(使用ModelViewSet时请参阅UpdateModelMixin){{ 1}}更新完整的对象。如果要进行部分更新,请仅使用要更新的字段PUT