我正在尝试自定义模型管理器向查询集添加注释。
我的问题一开始有点烦恼,但现在我意识到可能是一个实际问题,即 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不明白该方法正在任何地方使用。
这个问题有解决办法吗?
您必须明确提供类型提示。
# views.py
class ListCarsView(ListAPIView):
def get_queryset(self):
objects: CarQuerySet = Car.objects # Type hint
return objects.with_wheels() # yellow