Django - VS Code - 自定义模型管理器方法输入

问题描述 投票:0回答:1

我正在尝试自定义模型管理器向查询集添加注释。
我的问题一开始有点烦恼,但现在我意识到可能是一个实际问题,即 VS Code 无法识别自定义模型管理器/查询集中定义的方法。

示例:

from django.db import models
from rest_framework.generics import ListAPIView


# models.py
class CarQuerySet(models.QuerySet):
    def wiht_wheels(self): # NOTE: intentional typo
        pass # assume this does some annotaion


class Car(models.Model):
    objects = CarQuerySet.as_manager()


# views.py
class ListCarsView(ListAPIView):
    def get_queryset(self):
        return Car.objects.wiht_weels()  # <--- white instead of yellow

起初,我只是对

wiht_weels
打印成白色而不是方法/函数通常使用的黄色感到恼火。

然后我更生气了,因为这意味着 VS Code 不会给我任何关于该方法需要什么参数或返回什么的提示。

最后,我不小心在其中一个自定义模型方法的名称上犯了一个拼写错误,我点击了重构->重命名,但它只是在适当的地方重命名了它,而不是在使用它的地方(视图),可能是因为 VS Code不明白该方法正在任何地方使用。

这个问题有解决办法吗?

python django visual-studio-code django-models
1个回答
0
投票

您必须明确提供类型提示。

# views.py
class ListCarsView(ListAPIView):
    def get_queryset(self):
        objects: CarQuerySet = Car.objects # Type hint
        return objects.with_wheels()  # yellow
© www.soinside.com 2019 - 2024. All rights reserved.