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 запросов?