当前位置: 首页 > 面试题库 >

我如何在Django Rest序列化器中批量创建

陆运乾
2023-03-14
问题内容

我曾经使用 allow_add_remove = True ,它在Django rest
2.0中可用,用于编写可嵌套的序列化程序,但在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

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

我很困惑,我需要重写UserSerializercreateupdate方法吗

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

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

问题答案:

是的,您确实需要重写create和的update方法UserSerializer

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

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

该文档提供了创建1个嵌套级别的示例,但对于更新和/或具有更多嵌套级别的示例相同



 类似资料:
  • 我希望在Jackson中为Enum类的集合创建一个自定义反序列化器。因为自定义反序列化器的行为对于所有枚举都是相同的。我想为我的所有枚举类创建公共反序列化程序。 我尝试使一般自定义反序列化如下: 问题是我想在反序列化器中调用枚举静态方法,但无法这样做,因为我没有任何可用的类/枚举上下文信息。 你能帮我知道如何实现它吗?

  • 问题内容: 序列化器很少,例如 我们如何创建自己的自定义序列化程序? 问题答案: 在这里,您有一个示例,将自己的序列化器/解串器用于Kafka消息值。对于Kafka消息密钥是同一回事。 我们希望将MyMessage的序列化版本作为Kafka值发送,并再次将其反序列化为使用方的MyMessage对象。 在生产者端序列化MyMessage。 您应该创建一个实现org.apache.kafka.comm

  • 如何创建自己的自定义序列化程序?

  • 问题内容: 如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。 问题答案: 您不能序列化未实现的类,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现和,以便可以以自定义方式序列化其对象。 首先,使您的非序列化字段。 在中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。 在中,首先调用流以读

  • 本文向大家介绍如何在Python中创建可序列化的JSON类?,包括了如何在Python中创建可序列化的JSON类?的使用技巧和注意事项,需要的朋友参考一下 序列化是将复杂数据类型的对象转换为本地数据类型的过程,以便可以轻松地将它们转换为JSON表示法。  如果您有JSON字符串,则可以使用json.dumps()方法将其转换为JSON字符串。 Python pickle模块用于对Python对象结

  • 问题内容: 我正在尝试在MySQL中创建序列(从整体上来说,我对SQL还是很新的)。我正在使用以下代码,但这会导致错误: ORDID指向我正在使用的表中的字段。如何正确创建序列? 编辑: 据称,MySQL不使用序列。我现在正在使用以下代码,但这也会引起错误。我该如何解决? 编辑: 我想我找到了解决方法。对于phpMyAdmin(我正在使用),您可以使用以下代码。 我不知道为什么它会喜欢这种方式,但