Есть ли решение для подсказки типа аннотации в django?

У меня есть проект django, который я пытаюсь типизировать и добавить проверку типов через mypy. Я хочу использовать аннотации django для получения дополнительной информации об объекте. Эта операция добавляет свойства к уже объявленному классу. В пакете django-stubs уже есть класс типизации WithAnnotations, который должен выполнять эту работу, но не делает этого.

Для ясности, я просто хочу, чтобы этот код передавал mypy

from django.db import models

class User(models.Model):
  first_name: models.CharField()
  last_name: models.CharField()

class Team(models.Model):
  users: models.ManyToManyField(User)

class House(models.Model):
  inhabitants: models.ManyToManyField(User)

users = User.objects.all()
for user in users:
  print(user.first_name)

users_with_teams = Users.objects.all().annotate(teams_ids=ArrayAgg(...))
users_with_teams_and_houses = users_with_teams.annotate(houses_ids=ArrayAgg(...))

for user in users_with_teams:
  print(user.first_name)
  print(user.teams_ids)
  print(user.houses_ids)
  

Если я пытаюсь запустить его, то получаю ошибки object User has no attribute teams_ids или object User has no attribute houses_ids

Я подумал, что было бы неплохо иметь его в функциях:

from typing import TypeVar

T = TypeVar("T")

def annotate_teams(query: QuerySet[T]) -> QuerySet[SomethingElseButWhat]:
  return query.annotate(teams_ids=ArrayAgg(...))

но я не знаю, какой тип должна возвращать моя функция.

Кто-нибудь из вас знает, возможно ли то, что я ищу?

Вернуться на верх