gpt4 book ai didi

python - 在 Django Rest Framework 中更改 ModelViewSet 中的查询集

转载 作者:太空狗 更新时间:2023-10-30 02:08:41 25 4
gpt4 key购买 nike

我为 Djoser 写了一个 RegistrationView

class RegistrationView(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserRegistrationSerializer

permission_classes = (
permissions.AllowAny,
)

def perform_create(self, serializer):
user = serializer.save()
signals.user_registered.send(sender=self.__class__, user=user, request=self.request)
if settings.get('SEND_ACTIVATION_EMAIL'):
self.send_activation_email(user)
elif settings.get('SEND_CONFIRMATION_EMAIL'):
self.send_confirmation_email(user)

def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
token = create_token(serializer.data)
return Response(data=token, status=status.HTTP_201_CREATED, headers=headers)

def send_activation_email(self, user):
email_factory = utils.UserActivationEmailFactory.from_request(self.request, user=user)
email = email_factory.create()
email.send()

def send_confirmation_email(self, user):
email_factory = utils.UserConfirmationEmailFactory.from_request(self.request, user=user)
email = email_factory.create()
email.send()

如您所见,我想使用我自己的 create 函数。这就是我使用 ModelViewSet 的原因

但是如您所见,我以一种将列出所有用户对象的方式声明查询集,我不太喜欢这种方式。

所以,我的问题。

有没有办法声明另一个不显示该信息的“查询集”?

或者我应该在另一个地方写我的“创建”函数而不在那里写查询集吗?重点是我想在注册过程中调用create函数。

最佳答案

如果不想列出所有用户,为什么不 none 查询集。

queryset = User.objects.none()

或者您也可以覆盖 get_queryset 方法。

def get_queryset(self):
qs = super(RegistrationView, self).get_queryset()
qs = qs.none()
return qs

关于python - 在 Django Rest Framework 中更改 ModelViewSet 中的查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41648764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com