我正在寻找一种方法来正确地覆盖Django Rest框架中用于处理额外参数的ModelSerializer
序列化程序的默认.create()
方法。
在我最初的Django模型中,我刚刚重写了用于管理extra
参数的默认.save()
方法。现在.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表示为序列化程序上的一个字段。然后它将出现在
validated_data
的create
中,然后您可以让create
执行如下操作您可能希望查看create的默认实现,以了解它所做的其他一些事情(例如删除多对多关系等)。
相关问题 更多 >
编程相关推荐