【发布时间】:2018-05-28 07:38:38
【问题描述】:
我需要在一个请求中更新多个Article 中的categories。
在ArticleViewSet 我有:
def get_serializer_class(self):
if self.action in ['partial_update', 'update']:
return ArticlePostSerializer
return ArticleSerializer
所以ArticlePostSerializer 需要更改。
这是我的序列化程序代码:
class ArticleShortCategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = 'id', 'name'
class ArticleSerializer(serializers.ModelSerializer):
categories = serializers.SerializerMethodField()
def get_categories(self, obj):
return ArticleShortCategorySerializer(obj.categories, many=True).data
class Meta:
model = Article
read_only_fields = 'id'
fields = ('categories', 'text') + read_only_fields
class ArticlePostSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = 'id', 'categories', 'text'
我尝试添加:
class ArticlePostListSerializer(serializers.ListSerializer):
和
class Meta:
list_serializer_class = ArticlePostListSerializer
但它不起作用。 如何更改此代码以进行多次更新。 我的 json 请求
{
[id: 90, categories: [10,12,14]],
[id: 93, categories: [10,12,14]],
[id: 95, categories: [10,12,14]]
}
【问题讨论】:
-
使用创建 mixins
-
在视图中使用 create mixins.CreateModelMixin 并覆盖序列化器中的 Create 方法。或者您可以在 get_queryset 中进行更新工作,但这是个坏主意。
-
@AnupYadav 你能给我一些示例代码吗,怎么做?我是 djnago 的新手。我需要更新记录,我应该使用
mixins.CreateModelMixin还是mixins.UpdateModelMixin? -
使用其中一个并检查答案中的示例,因为在 cmets 中它无法正确显示。
-
@AnupYadav 所以我不必对
ArticleViewSet进行任何更改?改变序列化器就够了?
标签: python django django-serializer