Как аннотировать тип Manager().from_queryset()?Python

Программы на Python
Ответить
Anonymous
 Как аннотировать тип Manager().from_queryset()?

Сообщение Anonymous »

В Django у меня есть собственный QuerySet и Manager:

Код: Выделить всё

from django.db import models

class CustomQuerySet(models.QuerySet):
def live(self):
return self.filter(is_draft=False)

class CustomManager(models.Manager):
def publish(self, instance: "MyModel"):
instance.is_draft = False
instance.save()
В моей модели я хочу использовать оба, поэтому я использую метод from_queryset:

Код: Выделить всё

class MyModel(models.Model):
objects: CustomManager = CustomManager().from_queryset(CustomQuerySet)()

is_draft = models.BooleanField(blank=True, default=True)
Поскольку я аннотировал объекты как CustomManager, Pylance (через vscode) логически кричит мне, что MyModel.objects.live() неверен, из-за невозможности доступа к атрибуту «live» для класса «CustomManager». Атрибут «live» неизвестен.
Удаление аннотации типа приводит к аналогичной жалобе: невозможно атрибут доступа «live» для класса «BaseManager[MyModel]». Атрибут «live» неизвестен.
Как аннотировать объекты в MyModel, поэтому Pylance будет знать, что у объектов также доступны методы CustomQuerySet, а не только методы CustomManager?

Подробнее здесь: https://stackoverflow.com/questions/792 ... m-queryset
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»