我有 Django 视图的辅助函数,如下所示(代码如下)。它返回 None 或与给定查询匹配的单个对象(例如pk=1
).
from typing import Type, Optional
from django.db.models import Model
def get_or_none(cls: Type[Model], **kwargs) -> Optinal[Model]:
try:
return cls.objects.get(**kwargs)
except cls.DoesNotExist:
return None
假设我创建了自己的模型(例如Car
)有自己的字段(例如brand
, model
)。当我分配结果时get_or_none
函数到变量,然后检索实例字段,我在 PyCharm 中收到令人讨厌的未解析引用的警告。
car1 = get_or_none(Car, pk=1)
if car1 is not None:
print(car1.brand) # <- Unresolved attribute reference 'brand' for class 'Model'
什么是正确的类型暗示摆脱这个警告和获取变量的代码完成)?
Found this https://stackoverflow.com/a/53050962/12613082回答几乎类似的问题。解决方案是使用TypeVar https://docs.python.org/3/library/typing.html#typing.TypeVar从打字
from typing import TypeVar, Type, Optional
from django.db.models import Model
T = TypeVar('T', bound=Model)
def get_or_none(cls: Type[T], **kwargs) -> Optional[T]:
... # same code
一切正常:没有警告 and 代码完成
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)