Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Django 当覆盖create()时,如何在DRF ModelViewSet上执行get_或create?_Django_Django Rest Framework - Fatal编程技术网

Django 当覆盖create()时,如何在DRF ModelViewSet上执行get_或create?

Django 当覆盖create()时,如何在DRF ModelViewSet上执行get_或create?,django,django-rest-framework,Django,Django Rest Framework,由于一次可能创建多个实例,因此覆盖了带有create()方法的ModelViewSet。我想知道是否可以执行get\u或\u create而不是.perform\u create(),如下所示 基本上,如果我进行两次相同的调用,我只希望第一次调用创建实例 class CreateTokenView(viewsets.ModelViewSet): queryset = BayAccessToken.objects.all() serializer_class = accessTok

由于一次可能创建多个实例,因此覆盖了带有create()方法的ModelViewSet。我想知道是否可以执行get\u或\u create而不是.perform\u create(),如下所示

基本上,如果我进行两次相同的调用,我只希望第一次调用创建实例

class CreateTokenView(viewsets.ModelViewSet):
    queryset = BayAccessToken.objects.all()
    serializer_class = accessTokenSerializer

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data, many=True)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)

或者,循环并对数据执行自己的get_或create是最好的选择吗?

您必须覆盖序列化程序上的create方法,如下所示:

class accessTokenSerializer(serializer.X):

    def create(self, validated_data):
        return YourModel.objects.get_or_create(name=validated_data.pop("name"), defaults=validated_data)[0]