Как вернуть поля обеих связанных моделей в отношение Django ManyToMany? - PullRequest
0 голосов
/ 26 мая 2019

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

class P(mdoels.Model):
    name = models.CharField(null=False,max_length=120)
    ...

class F(mdoels.Model):
    name = models.CharField(null=False,max_length=120)
    ...
    p = models.ManyToManyField(P)

Мне нужен запрос, подобный этому:

SELECT p.name, f.name
FROM f
JOIN f_p ON f.id = f_p.f_id
JOIN p ON p.id= f_p.p_id

Я могу использовать f.objects.filter(), но он не возвращает поля p, и мне нужно просто показать список с обоими именами.

В psql запрос работает так, как мне нужно. Как я могу сделать это в Django?

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Использовать prefetch_related :

F.objects.filter(...).prefetch_related('p')
0 голосов
/ 26 мая 2019

Попробуйте values_list документы

F.objects.values_list('name', 'p__name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...