gpt4 book ai didi

python - Django 休息框架 : override create() in ModelSerializer passing an extra parameter

转载 作者:太空狗 更新时间:2023-10-29 19:37:25 24 4
gpt4 key购买 nike

我正在寻找一种方法来正确覆盖 Django Rest Framework 中 ModelSerializer 序列化程序的默认 .create() 方法以处理额外参数。

在我最初的 Django 模型中,我刚刚覆盖了默认的.save() 方法来管理一个extra 参数。现在 .save() 也可以这样调用:.save(extra = 'foo')

我必须在原始 Django 模型上创建一个 ModelSerializer 映射:

from OriginalModels.models import OriginalModel
from rest_framework import serializers

class OriginalModelSerializer(serializers.ModelSerializer):

# model fields
class Meta:
model = OriginalModel

但是通过这种方式我无法将extra 参数传递给模型.save() 方法。

我怎样才能正确地覆盖我的 OriginalModelSerializer 类的 .create() 方法以(最终)考虑这个 extra 参数?

最佳答案

嗯。这可能不是完美的答案,因为我不知道你想如何传递这个“额外”(即它通常是表单中的额外字段等)

您可能想要做的只是将 foo 表示为序列化程序上的一个字段。然后它将出现在 createvalidated_data 中,然后你可以让 create 做类似下面的事情

def create(self, validated_data):
obj = OriginalModel.objects.create(**validated_data)
obj.save(foo=validated_data['foo'])
return obj

您可能想要查看 create 的默认实现,以了解它所做的其他一些事情(例如删除多对多关系等)。

关于python - Django 休息框架 : override create() in ModelSerializer passing an extra parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650008/

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