我正在使用 Django 4.1.7 和 django-stubs 1.16.0,以及 mypy 1.1.1.
我为我的用户模型创建了一个自定义用户管理器,如下所示:
from django.contrib.auth.models import UserManager
class MyUserManager(UserManager):
def delete_test_data(self):
return self.filter(test_data=True).delete()
class User(AbstractUser):
test_data = models.BooleanField()
...
objects = MyUserManager()
一切都按预期工作,但是当我对此运行 mypy 时,它会抱怨:
models.py:32: error: Incompatible types in assignment (expression has type "MyUserManager[User]", base class "AbstractUser" defined the type as "UserManager[AbstractUser]") [assignment]
我做错了什么吗?这是一个 mypy 错误吗? django-stubs 中定义的错误类型?有没有办法在不强制 mypy 忽略它的情况下键入它?
指定我的经理是
AbstractUser
似乎奏效了:
from django.contrib.auth.models import UserManager, AbstractUser
class MyUserManager(UserManager[AbstractUser]):
...