如何在 Django 中为 mypy 键入自定义用户模型管理器?

问题描述 投票:0回答:1

我正在使用 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 忽略它的情况下键入它?

python django mypy
1个回答
0
投票

指定我的经理是

AbstractUser
似乎奏效了:

from django.contrib.auth.models import UserManager, AbstractUser

class MyUserManager(UserManager[AbstractUser]):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.