在我的API中,我绑定了一个创建视图,该视图引用了另一个记录OneToOne。但是,有时用户似乎一次发送了两个请求,而第二次由于记录重复冲突而失败:
class CreateProfileLink(generics.CreateAPIView):
def perform_create(self, serializer):
ins = serializer.save(user=self.request.user)
serializer_class = ProfileLinkSerializer
有没有一种方法可以覆盖create方法以返回记录(如果已存在)而不是创建记录?
答案 0 :(得分:1)
您可以通过覆盖get_or_create
方法来在序列化程序类中使用create()
:
class ProfileLinkSerializer(serializers.ModelSerializer):
...
class Meta:
model = Profile
fields = (...)
def create(self, validated_data):
profile, _ = Profile.objects.get_or_create(**validated_data)
return profile
由于您尚未提供models.py
,因此我在这里使用Profile
作为模型名称。如果项目中的内容不同,请确保将其替换。