Django多对多查询,匹配所有相关字段

时间:2020-02-24 11:48:06

标签: python django many-to-many django-select-related

在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
    )

函数是一个字符串,其中包含一个或多个用“ /” e分隔的标识符。 G。 “ 1300”,“ 1300/2200”,“ 1300/2230/7500”,...

我现在想执行一个查询,该查询仅获取全部建筑物的功能相同的BuildingMapping个实例。我尝试了以下操作,但这也会返回BuildingMapping实例,其中只有一个建筑物具有“ 1300”功能。

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

谢谢!

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则要获取的功能字段包含“ 1300”。如果正确: BuildingMapping.objects.filter(buildings__function__contains="1300")

答案 1 :(得分:0)

我看到您正在尝试获取所有与1300相匹配的结果。您正在做的是完全匹配

enter image description here 强文本

您需要使用icontains(不区分大小写)或contains(区分大小写)来获取所有匹配的数据