我有一个DRF序列化器,我想将其用于多种用途。它应该能够更新,创建和排他地验证(不保存)。创建和更新我没有问题,验证时遇到了问题。在验证的同时,我需要创建对象的实例,并将序列化的对象返回给客户端。但是,我不想使用我在验证时创建保存实例时通常使用的所有字段。另外,我只希望能够创建一个实例并继续前进。
我当前的解决方案是使用rest_flex_fields
'FlexFieldsModelSerializer
。这似乎工作正常,但是当我尝试创建实例而不实际保存它时,它无法创建实例并返回None
。
我重写了create
函数,如下所示:
def create(self, validated_data):
instance = ModelClass(**validated_data)
return instance
但是instance
始终是None
。我不知道为什么。
这就是我的观点:
if serializer.is_valid(raise_exception=True):
instance = serializer.create(serializer.validated_data)
return MySerializer(instance).data
但是,如果instance
为None
,那将永远无法工作。
所以我想这里的TL; DR是:
None
但保存一个实例却不会返回?答案 0 :(得分:0)
将您的 create()
方法更改为
def create(self, validated_data):
instance = ModelClass.objects.create(**validated_data)
return instance
除非您create()
模型实例,否则可能None