对我的 Django 模型进行编码并添加使用“对象”管理器的方法后,Mypy 继续显示错误(命令:“mypy .”):
models.py:168: error: "type[MyModel]" has no attribute "objects" [attr-defined]
如何解决?
我在 Github 上阅读了一些问题,找到了一个解决方案(https://github.com/typeddjango/django-stubs/issues/1684)。有不同的方法:
使用 _default_manager 属性,但这是一个受保护的属性并且不方便(您还会收到 linter 警告):https://docs.djangoproject.com/en/4.2/topics/db/managers/# django.db.models.Model._default_manager
用无用的对象提示来注释模型类,例如'objects: models.Manager["MyModel"]'
例如最终结果将是:
class Action(models.Model):
class Meta:
verbose_name = _("Action")
verbose_name_plural = _("Actions")
# useless Mypy type hinting. Avoids errors in Mypy check
objects: models.Manager["Action"]