Подтвердить что ты не робот

Django: Выполняет ли prefetch_related() отслеживание обратной связи?

Я пробовал prefetch_related() в django 1.4 из trunk и не могу сделать это для предварительной выборки обратного просмотра.

Мои упрощенные модели (в каждой книге много цен):

class Book(models.Model):
    # some fields

class Price(models.Model):
    book = models.ForeignKey(Book)

Мой запрос на просмотр:

books = Book.objects.prefetch_related('price')

Затем я получил сообщение AttributeError:

AttributeError: Cannot find 'price' on Book object, 'price' is an invalid parameter to prefetch_related()

Как заставить его работать? Спасибо.

4b9b3361

Ответ 1

Определите связанное имя:

class Price(models.Model):
    book = models.ForeignKey(Book, related_name='prices')

а затем используйте его:

books = Book.objects.prefetch_related('prices')