Django admin inline и множественные запросы

Я оптимизирую админку Django, и у меня есть некоторые проблемы с инлайнами. Я видел несколько вопросов на Stack Overflow, но ни один не помог. Вот мой код:

models/consumer_application.py

class ConsumerApplication(TimeStampedModel, ActivatorModel, HumanReadableIdModel):
    uuid = models.UUIDField(default=uuid.uuid4, db_index=True, unique=True)
    status = models.ForeignKey("consumer.ApplicationStatus", on_delete=models.PROTECT)
    ...

models/offer.py

class ConsumerApplication(TimeStampedModel, ActivatorModel, HumanReadableIdModel):
    uuid = models.UUIDField(default=uuid.uuid4, db_index=True, unique=True)
    application = models.ForeignKey("consumer.ConsumerApplication", on_delete=models.PROTECT, related_name="offers")
    ...

admin.py

@admin.register(ConsumerApplication)
class ConsumerApplicationAdmin(UserInlineCustomAdminMixin, AddNewDisabled, admin.ModelAdmin):
    exclude = [...]
    list_display = (...)
    search_fields = (...)
    readonly_fields = (...
    )
    inlines = [OfferInline]

    def get_queryset(self, request):
        return super().get_queryset(request).prefetch_related("offers")

class OfferInline(admin.TabularInline):
    model = Offer
    exclude = [...]

А когда я открываю детальное представление ConsumerApplication, у меня отображается 6 предложений и 12 запросов:

SELECT "consumer_offer"."id",
       "consumer_offer"."application_id"
FROM "consumer_offer"
WHERE "consumer_offer"."id" = 675
LIMIT 21

Я пытался переопределить get_queryset из OfferInline, но что бы я ни делал, я получаю то же самое. Как я могу оптимизировать его, чтобы у меня не было этих 12 запросов?

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