Django запрос «многие ко многим», соответствующий всем связанным полям - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть две модели, связанные отношением «многие ко многим» в django.

class BuildingMapping(models.Model):

    name = models.CharField(max_length=1000, null=False)
    buildings = models.ManyToManyField(
        Building, related_name="mapping"
    )

class Building(models.Model):
    function = models.CharField(
        max_length=1000, blank=True, null=True
    )

Функция - это строка, содержащая один или несколько идентификаторов, разделенных на «/», например «1300», «1300/2200», «1300/2230/7500», ...

Теперь я хочу выполнить запрос, который получает только BuildingMapping экземпляров, в которых функция для всех зданий идентичны. Я попробовал следующее, но это также вернет BuildingMapping случаев, когда только одно здание имеет «1300» в качестве функции.

BuildingMapping.objects.filter(buildings__function="1300")

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Я вижу, что вы пытаетесь получить все результаты, соответствующие 1300. То, что вы делаете, это точное совпадение

сильный текст

Вам необходимо использовать значки значков (без учета регистра) или содержит (с учетом регистра) для получения всех сопоставленных данных

enter image description here

0 голосов
/ 24 февраля 2020

Если я правильно понял, вы хотите получить поле функции, содержащее «1300». Если это правильно: BuildingMapping.objects.filter(buildings__function__contains="1300")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...