Django 当覆盖create()时,如何在DRF ModelViewSet上执行get_或create?
由于一次可能创建多个实例,因此覆盖了带有create()方法的ModelViewSet。我想知道是否可以执行get\u或\u create而不是.perform\u 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
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]