Django - фильтр запросов по многим адресам существует - PullRequest
1 голос
/ 04 июня 2019

У меня есть такая модель:

class News(models.Model):
    # ...
    channels = models.ManyToManyField(Channel)
    # ...

Какой самый эффективный способ получения новостей, связанных с каналами?

1 Ответ

2 голосов
/ 04 июня 2019

Для данного канала вы можете фильтровать с помощью:

News.object.filter(<b>channels=</b><i>my_channel</i>)

для коллекции (список, QuerySet, ...):

News.object.filter(<b>channels__in=</b><i>my_channel_collection</i>)

Для News объектов, которые имеют как минимум один (или более) каналов, мы можем запросить с помощью:

News.objects.filter(<b>channels__isnull=False</b>)<b>.distinct()</b>

или .exclude(..):

News.objects.<b>exclude(channels=None)</b>
...