Как использовать корректные типы для полей модели Django с заглушками django?

Рассмотрим следующий фрагмент кода, связанный с моделями Django:

class Machine(HasStatus):  # type: ignore
    machines: "models.Manager[Machine]" = models.Manager()
    number = models.IntegerField(verbose_name="Číslo stroje", unique=True)
    #Type of "number" is "IntegerField[Unknown, Unknown]"

    class Meta: #"Meta" overrides symbol of same name in class "HasStatus"
        verbose_name = "Machine"

Я смог найти, как аннотировать Manager, но я не знаю, как удовлетворить PyLance для полей модели и класса Meta. Для полей модели, похоже, мне нужно предоставить два типа, но я понятия не имею, какой из них второй.

Пожалуйста, приведите примеры использования аннотации типа для других полей модели Django, таких как ForeignKey и другие.

В Django невозможно корректно типизировать модели, по крайней мере, мне это известно.

Проблема в том, что сам django не типизирован, а pylance использует pyright type checker, который не использует информацию о времени выполнения, а только статический анализ кода для его линтинга. Mypy, с другой стороны, поддерживает плагины, и есть плагин для Django, который извлекает информацию о времени выполнения ваших моделей, даже для динамических ссылок на модели.

Возможно, в более позднем выпуске они добавят поддержку этих функций.

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