Эмуляция пустого кверисета с помощью абстрактной модели
У меня есть сценарий использования, в котором у меня есть ListAPIView, который подключается к API стороннего производителя (Stripe), получает данные (счета) и возвращает их пользователю. У меня есть сериализатор, но нет модели.
Весь код выглядит примерно так:
class InvoicesList(generics.ListAPIView):
serializer_class = InvoiceSerializer
def get_queryset(self):
if getattr(self, 'swagger_fake_view', False):
return # <---- ¿?¿?¿?¿?¿?¿?¿?¿?
return StripeWrapper().get_invoices()
class InvoiceSerializer(serializers.Serializer):
...fields..
...fields...
...fields
class StripeWrapper():
def get_invoices():
return requests.get(......)
Поскольку у меня нет модели, drf-spectacular
отказывается генерировать соответствующие спецификации openapi. Он ожидает получить EmptyQuerySet
(SomeModel.objects.none()
), но я не могу предоставить ему ничего, поскольку у меня нет Invoice
модели. Я мог бы создать абстрактную модель, например, такую:
class Invoice(models.Model):
class Meta:
abstract = True
но я все равно не смогу предоставить drf-spectacular
в Invoice.objects.none()
, поскольку в этом классе нет менеджера (и не может быть, поскольку он абстрактный).
Как я могу "эмулировать" (¿?) или "сгенерировать" EmptyQuerySet
, чтобы обойти эту проблему?