Избегайте n + 1 запросов в списке администратора Django. - PullRequest
1 голос
/ 27 октября 2019

У меня есть модель Django:

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.PROTECT)

    @property
    def slug(self):
        return slugify(self.author.name)

Теперь, если я добавлю slug поле к admin list_display, для каждого экземпляра будет отдельный запрос.

Каксделать только один запрос для всех экземпляров?

Я пытался использовать select_related в классе ModelAdmin, но у меня не получилось.

1 Ответ

4 голосов
/ 28 октября 2019

Вы можете переопределить get_queryset () вашего ModelAdmin, чтобы добавить свой select_related.


    def get_queryset(self, request):
        return super().get_queryset(request).select_related('author')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...