可以用Python类型提示在Django QuerySet中指定记录类型吗?像是QuerySet[SomeModel]
?
例如,我们有一个模型:
class SomeModel(models.Model):
smth = models.IntegerField()
我们想在func中将该模型的QuerySet作为param传递:
def somefunc(rows: QuerySet):
pass
但是如何在QuerySet中指定记录类型,如使用List[SomeModel]
:
def somefunc(rows: List[SomeModel]):
pass
但是和奎丽斯特在一起?
一种解决方案可能是使用联合类型类。
现在,当分割
row
参数时,它将知道返回的类型是MyModel的另一个列表或MyModel的一个实例,同时还暗示QuerySet
类的方法在row
参数上也可用。这是一个改进的帮助类或段。
此类专门用于
QuerySet
对象,例如在查询中使用filter
时。样品:
现在,解释器将
sample_query
识别为一个QuerySet
对象,您将得到诸如count()
之类的建议,并且当循环遍历这些对象时,您将得到有关SampleClass
的建议注意
这种类型提示的格式从
python3.6
开始就可用。您还可以使用django_hint,它具有专门用于Django的暗示类。
我让这个helper类得到一个泛型类型提示:
然后像这样使用:
这减少了每次使用此类型时的噪声,并使其在模型之间可用(如
ModelType[DifferentModel]
)。相关问题 更多 >
编程相关推荐