python - 如何在 Django QuerySet 中使用 Python 类型提示?

标签 python django type-hinting

是否可以使用 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/

相关文章:

NetBeans 中映射(关联数组)的 PHP 类型提示?

python - 如何使用 pandas.Series.str.contains 搜索字符加上

python - 安装python模块时出现语法错误

python - Django:使用 <select multiple> 和 POST

python - DRF - 如何从查询集中获取单个项目?

python - 如何在 Django 中渲染单个 View 时将一个模型中的字段用于另一个模型

python - 这里 "if False:"的作用是什么?

python - 为什么 mypy 找不到我的包裹?

Python - 函数内的静态变量

python - 如何在 PyQT5 中为 QPlainTextEdit(或任何其他组件)实现关键监听器