Каков наиболее эффективный способ получения объектов отношений «многие ко многим»? - PullRequest
0 голосов
/ 09 июля 2010

У меня есть следующие две модели

class Author(Model):
    name = CharField()

class Publication(Model):
    title = CharField()

И я использую промежуточную таблицу, чтобы отслеживать список авторов. Порядок авторов имеет значение; и именно поэтому я не использую ManyToManyField от Django.

class PubAuthor(Model):
    author = models.ForeignKey(Author)
    pubentry = models.ForeignKey(Publication)
    position = models.IntegerField(max_length=3)

Проблема в том, что для данной публикации наиболее эффективный способ привлечь всех авторов к публикации?

Я могу использовать pubentry.pubauthor_set.select_related (). Order_by ('position'), но тогда он будет генерировать один запрос каждый раз, когда я получаю доступ к имени автора.

1 Ответ

0 голосов
/ 09 июля 2010

Я узнал ответ.

В публикациях:

    def authors(self):
        return Author.objects.all().filter(
            pubauthor__pubentry__id=self.id).order_by('pubauthor__position')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...