Есть ли способ получить все связанные с ManyToMany объекты в DRF? - PullRequest
1 голос
/ 23 апреля 2019

У меня есть теги в моем приложении, и можно тегировать разные вещи, такие как новости, события ... Новости и события имеют отношение к тегам ManyToMany.Можно ли получить каждый объект, где используется тег?

Мои модели (сокращенные) выглядят так:

Модель тега

class Tag(models.Model):
    title = models.CharField(max_length=35)

Модель новостей

class News(models.Model):
    title = models.CharField(max_length=75)
    tag = models.ManyToManyField(Tag, related_name="news")

Модель события

class Event(models.Model):
    title = models.CharField(max_length=75)
    tag = models.ManyToManyField(Tag, related_name="event")

Я знаю, что могу получать все новости, которым присвоены теги

tag = self.get_object()
tag.news.all()

Но возможно ли получить все новости, события... без 10 запросов?Я ищу что-то вроде tag.all.all()

1 Ответ

0 голосов
/ 23 апреля 2019

попробовать это

tag.news.all() | tag.event.all()

"новости" и "события" доступны благодаря обратной связи, которая определена в соответствующих полях модели с ключевым словом "related_name".

noteчто это может дать дубликаты тегов, так как это объединение между ними.для отдельных тегов

(tag.news.all() | tag.event.all()).distinct()
...