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

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

我正在使用 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()

当 mypy 看这个的时候,它说:

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

模型管理器方法中

self.model
的类型似乎是
_T
,据我所知这是绑定到模型的通用类型,在我的例子中应该是“产品”。

为什么这不起作用?我该如何解决?

python django mypy
© www.soinside.com 2019 - 2024. All rights reserved.