gpt4 book ai didi

django - 我不明白 Django-Rest-Framework 序列化器是如何工作的

转载 作者:行者123 更新时间:2023-12-01 23:43:50 26 4
gpt4 key购买 nike

这可能看起来是一个愚蠢的问题,但我真的觉得 Django-Rest-Framework 并没有很好地解释它是如何工作的。有太多的黑盒魔法混淆了配置指令(在我看来)。

例如,它说我可以在序列化器中覆盖创建或更新。因此,当我的 View 发布时,我可以将数据发送到声明了更新方法的序列化器。

class MySerializer(serializers.ModelSerializer):

class Meta:
model = MyModel

def update(self, instance, validated_data):

只有当模型已经存在并且我们只是更新其中的一些数据时才会调用 update 吗?或者当它创建一个新的时它会调用 create 吗?

如果我要将此方法添加到该类中,

def create(self, validated_data):
return MyObject.objects.create(**validated_data)

这是否是添加新对象时必须调用的方法?并且您的重写能力应该放在序列化器中,但如果没有声明,这是带有正在调用的参数的默认方法?

最佳答案

There is too much black box magic which confuses the configuration instructions (in my opinion).

如果您认为文档中有需要改进的地方,请随时 to submit a pull request有更新。如果看起来合理,它可能会被合并并出现在未来的版本中。

Or does it call create when it creates a new one?

create当序列化器未使用模型实例初始化但仅将数据传递到其中时调用。一次serializer.save()被调用时,序列化器检查是否传入了实例并直接调用 create这样模型实例就被创建并保存在数据库中。

Does update only get called when the model already exists and we're just updating some of it's data?

update当使用模型实例(或其他对象)和 serializer.save() 初始化序列化器时调用叫做。这大致相当于 Model.objects.update()Model.objects.create() 相比.

is this specifically the method that must be called in order to add a new object?

序列化器被设计为使用中央 serializer.save() 来保存(包括对象创建和更新)方法。这类似于使用 model.save() 保存或创建模型的方式。方法。

and your ability to override should be put in the serializer, but if not declared this is the default method with parameters that's being called?

建议覆盖createupdate如果您需要更改如何保存模型及其相关对象的逻辑,例如在使用嵌套序列化器时,请在序列化器级别上进行。

关于django - 我不明白 Django-Rest-Framework 序列化器是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com