第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django & mypy: ValuesQuerySet type hint

Django & mypy: ValuesQuerySet type hint

達令說 2022-08-02 10:47:09
對于返回如下所示的查詢集的函數,使用什么類型的提示?def _get_cars_for_validation(filter_: dict) -> QuerySet:     return (         Car.objects.filter(**filter_)         .values("id", "brand", "engine")         .order_by("id")     )mypy返回錯誤不兼容的返回值類型(獲取“ValuesQuerySet[Car, TypedDict({'id': int, 'brand': str, 'engine': str})]”, expected “QuerySet[Any]”)我會使用,但它在Django 1.9中被刪除了。 報告來自 3rd party lib django-stubs(我無法導入它;它真的可能嗎?)。ValuesQuerySetValuesQuerySetmypy
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

我遇到了完全相同的問題,我在GitHub問題中找到了解決方案:


import typing


if typing.TYPE_CHECKING:

    from django.db.models.query import ValuesQuerySet


def _get_cars_for_validation(filter_: dict) -> 'ValuesQuerySet[Car, int]':

    return (

        Car.objects.filter(**filter_)

        .values("id", "brand", "engine")

        .order_by("id")

    )

當您運行程序時,將阻止,因為不存在的僅在 mypy 檢查期間導入。另請注意,注釋必須是字符串:。if typing.TYPE_CHECKINGImportErrorValuesQuerySet'ValuesQuerySet[Car, int]'


第二個論點對我來說是一個謎;問題的OP使用了“并且它有效”,在我的情況下,我嘗試了其他幾種類型,并且它們也都有效;我想你也可以用,我想。'ValuesQuerySet[Car, int]'intAny


您可以使用 reveal_type() 自行檢查變量的類型。


查看完整回答
反對 回復 2022-08-02
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您也可以投射到:QuerySet


from typing import cast


from django.db.models import QuerySet


return (

        cast(QuerySet, Car.objects.filter(**filter_))

        .values("id", "brand", "engine")

        .order_by("id")

    )


查看完整回答
反對 回復 2022-08-02
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號