Получить все возможные значения поля M2M в модели - PullRequest
2 голосов
/ 10 марта 2019

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

class Country(models.Model):
    name = models.CharField(max_length=200)

class City(models.Model):
    name = models.CharField(max_length=200)
    country = models.ForeignKey(Country,on_delete=models.CASCADE)

class Restaurant(models.Model):
    city = models.ManyToManyField(City)

В моей базе данных 120 городов и 25 стран.Но созданные рестораны расположены только в 20 городах.

Проблема: мне нужен запрос, чтобы найти все города, где расположены мои рестораны.И еще один запрос для извлечения всех стран, где расположены мои рестораны.

Решение:

Для первого запроса я использовал идею, предложенную @Daniel Roseman:

City.objects.exclude(restaurant=None)

Для второго запроса я продолжал получать пустой набор запросов.Мне пришлось пользователя фильтр:

Country.objects.exclude(city__restaurant__isnull=False).distinct()

1 Ответ

3 голосов
/ 10 марта 2019

Вы можете просто следить за отношениями.

City.objects.exclude(restaurant=None)

и

Country.objects.exclude(city__restaurant=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...