Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回现有记录,而不是创建RESTAPI框架_Python_Django_Rest_Django Rest Framework - Fatal编程技术网

Python 返回现有记录,而不是创建RESTAPI框架

Python 返回现有记录,而不是创建RESTAPI框架,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,在我的API中,我有一个create视图绑定,它引用了另一条记录OneToOne。但是,有时用户似乎会同时发送两个请求,而第二个请求由于重复记录冲突而失败: class CreateProfileLink(generics.CreateAPIView): def perform_create(self, serializer): ins = serializer.save(user=self.request.user) serializer_class =

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

class CreateProfileLink(generics.CreateAPIView):

    def perform_create(self, serializer):

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

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

您可以在序列化程序类中通过重写其方法来使用:

由于您尚未提供您的
models.py
,因此我在这里使用
Profile
作为模型名称。如果它与您的项目不同,请确保将其替换

class ProfileLinkSerializer(serializers.ModelSerializer):
    ...

    class Meta:
        model = Profile
        fields = (...)

    def create(self, validated_data):
        profile, _ = Profile.objects.get_or_create(**validated_data)
        return profile