Prefetch_related для queryset.get () - PullRequest
       2

Prefetch_related для queryset.get ()

0 голосов
/ 09 февраля 2020

Сегодня я написал метод просмотра DRF, используя prefetch_related:

def post(self, request, post_uuid, format=None):
        post = Post.objects.prefetch_related('postimage_set').get(uuid=post_uuid)
        postimage_set = post.postimage_set.all()
        for image in postimage_set:
            ...
        return Response('', status.HTTP_200_OK)

И я боюсь, что я неправильно использую prefetch_related с этим. Имеет ли смысл использовать prefetch_related здесь, или будет извлекать все posts, а также все postimages, а затем фильтровать этот набор только для одного экземпляра? Я очень благодарен за любую помощь в этом.

1 Ответ

1 голос
/ 09 февраля 2020

выглядит немного неестественно. Не глядя на структуру вашей базы данных, я могу только догадываться, что вы действительно хотите сделать: PostImage.objects.filter(post__uuid=post_uuid) (не обращайте внимания на использование dunder между post и uuid - этот простой трюк, следующий за атрибутом отношения), который должен привести к в одном запросе.

Более того, если вы не уверены в количестве запросов, которые попадут в базу данных, вы можете написать очень точный тест с одним из утверждений, который доступен с Django 1.3: assertNumQueries

...