是否可以使用 Python 类型提示在 Django QuerySet 中指定记录类型? QuerySet[SomeModel]
之类的东西?
例如,我们有模型:
class SomeModel(models.Model):
smth = models.IntegerField()
我们想将该模型的 QuerySet 作为参数传递给 func:
def somefunc(rows: QuerySet):
pass
但是如何在 QuerySet 中指定记录的类型,比如 List[SomeModel]
:
def somefunc(rows: List[SomeModel]):
pass
但是使用查询集?
最佳答案
一种解决方案可能是使用联合类型。
from typing import Union, List
from django.db.models import QuerySet
from my_app.models import MyModel
def somefunc(row: Union[QuerySet, List[MyModel]]):
pass
现在,当您对 row
参数进行切片时,它会知道返回的类型是 MyModel 的另一个列表或 MyModel 的实例,同时还暗示 QuerySet 的方法
类也可用于 row
参数。
关于python - 如何在 Django QuerySet 中使用 Python 类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397502/