Pyt*_*eat 9 django django-rest-framework
这可能看起来像一个愚蠢的问题,但我真的觉得Django-Rest-Framework并不能很好地解释它是如何工作的.有太多黑盒魔术混淆配置说明(在我看来).
例如,它说我可以在我的序列化器中覆盖创建或更新.因此,当我的视图发布时,我可以将数据发送到具有声明的更新方法的序列化程序.
class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
def update(self, instance, validated_data):
Run Code Online (Sandbox Code Playgroud)
是否更新,当模型已存在只能得到打来电话,我们只是更新了一些它的数据呢?或者在创建新的时候调用create?
如果我要将此方法添加到该类,
def create(self, validated_data):
return MyObject.objects.create(**validated_data)
Run Code Online (Sandbox Code Playgroud)
这是否是为了添加新对象必须调用的方法?并且你的覆盖能力应该放在序列化器中,但如果没有声明,这是带有被调用参数的默认方法?
Kev*_*own 20
有太多黑盒魔术混淆配置说明(在我看来).
如果您认为文档中有某些内容可以改进,请随时提交带有更新的拉取请求.如果它看似合理,它可能会合并并显示在将来的版本中.
或者在创建新的时候调用create?
create在未使用模型实例初始化序列化程序时调用,但仅将数据传递给它.serializer.save()调用一次后,序列化程序会检查实例是否已传入并直接调用,create以便创建模型实例并将其保存在数据库中.
更新只在模型已经存在时才被调用,我们只是更新它的一些数据吗?
update使用模型实例(或其他对象)初始化序列化程序并调用时serializer.save()调用.这大致相当于与之Model.objects.update()相比Model.objects.create().
这是否是为了添加新对象必须调用的方法?
序列化器旨在使用中央serializer.save()方法保存(包括对象创建和更新).这类似于使用该model.save()方法保存或创建模型的方式.
并且你的覆盖能力应该放在序列化器中,但如果没有声明,这是带有被调用参数的默认方法?
建议重写create,并update在串行水平,如果你需要更改逻辑模型及其相关对象如何需要保存,例如使用嵌套串行工作时.
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |