返回现有记录而不创建Rest API框架

2024-05-02 12:54:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的API中,我有一个create视图绑定,它引用了另一条记录OneToOne。但是,有时用户似乎会同时发送两个请求,而第二个请求由于重复记录冲突而失败:

class CreateProfileLink(generics.CreateAPIView):

    def perform_create(self, serializer):

        ins = serializer.save(user=self.request.user)

    serializer_class = ProfileLinkSerializer

如果记录已经存在,是否有一种方法可以重写create方法以返回它,而不是创建它


Tags: 方法用户self视图apicreate记录class
1条回答
网友
1楼 · 发布于 2024-05-02 12:54:29

您可以在序列化程序类中使用^{},方法是重写其^{}方法:

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作为模型名。如果它与您的项目不同,请确保将其替换

相关问题 更多 >