我如何在 django rest 序列化程序中批量创建

Joh*_*aff 11 python django django-rest-framework

我曾经使用在 django rest 2.0 中可用的allow_add_remove=True来编写可嵌套序列化程序,但它在 3.0 中不可用,我很难实现它。

我想做这样的事情

class UserSerialzier():
    project = ProjectSerilaizer(many=True, allow_add_remove=True, read_only=False)


class ProjectSerialzier():
    ideas = IdeaSerilaizer(many=True, allow_add_remove=True, read_only=False)
    sources = SourceSerilaizer(many=True, allow_add_remove=True, read_only=False)

class IdeaSerialzier():
    pass

class SourceSerialzier():
    pass      
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何在 DRF 3.0 中实现 allow_add_remove 行为

我很困惑的是我需要重写createupdateUserSerializer的方法

或者我需要为每个模型创建单独的 IdeaListSerializer

class IdeaListSerializer(serializers.ListSerializer):
    def create(self, validated_data):
        ideas = [Idea(**item) for item in validated_data]
        return Ideas.objects.bulk_create(books)
Run Code Online (Sandbox Code Playgroud)

Lin*_*via 6

是的,你确实需要覆盖createupdate你的方法UserSerializer

我花了很多时间试图让嵌套的可写序列化程序与 DRF 2.x 一起工作,我修复的问题越多,角落用例出现的问题就越多。

因此,Tom 决定由开发人员来处理创建和更新。

文档提供了一个创建 1 个嵌套级别的示例,但它与更新和/或更多嵌套级别相同