python 如何修复Django模型管理器方法的返回类型?

a64a0gku  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(109)

我使用的是Django 4.1.7和django-stubs 1.16.0以及mypy 1.1.1。
我有这样的代码:

class ProductQuerySet(QuerySet):
    ...

class ProductManager(Manager):
    def create_red_product(self, **kwargs) -> "Product":
        return self.model(color=Product.Color.RED, **kwargs)

_product_manager = ProductManager.from_queryset(ProductQuerySet)

class Product(Model):
    ...
    objects = _product_manager()

当我看到这个的时候,它说:

models/product.py:46: error: Incompatible return value type (got "_T", expected "Product")  [return-value]

在模型管理器方法中,self.model的类型似乎是_T,据我所知,这是一个绑定到模型的泛型类型,在我的例子中应该是“Product”。
为什么不管用?我怎么修?

iyr7buue

iyr7buue1#

我无法一一重现您的案例,但请尝试通过以下方式详细说明您的经理的职责:

class ProductManager(Manager["Product"]):

相关问题