request.user 返回抽象用户 (django-stubs)

request.user returning abstract user (django-stubs)

我正在尝试输入以下内容:

user: Final[CustomUser] = self.request.user

其中 CustomUser 是我在 settings.py 中定义的自定义用户模型。我的 IDE 抱怨 Expected type 'CustomUser', got 'AbstractBaseUser' instead。查看文档,它说 self.request.user returns 是 AUTH_USER_MODEL 的一个实例,但显然这没有发生。

也尝试过:

 def get(self, request: MyRequest, *args, **kwargs) -> HttpResponse:
    user: Final[CustomUser] = self.request.user

在哪里

from django.http import HttpRequest
from my_user_app.models import CustomUser

class MyRequest(HttpRequest):
    user: CustomUser

这里有一个关于此错误的未解决问题 https://github.com/typeddjango/django-stubs/issues/309

根据 django-stubs 的文档,您必须在使用自定义用户模型时提供自己的请求类型。在 PyPi 页面底部 How can I use HttpRequest with custom user model?

from django.http import HttpRequest
from my_user_app.models import CustomUser

class MyRequest(HttpRequest):
    user: CustomUser

那你就得用这个来注解self.request

 def get(self, request: MyRequest, *args, **kwargs) -> HttpResponse:
    user: Final[CustomUser] = request.user