首页 > 解决方案 > Django多对多查询匹配所有相关字段

问题描述

我有两个模型通过 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的功能相同的实例。我尝试了以下方法,但这也会返回只有一个建筑物具有“1300”作为功能的实例。BuildingMapping

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

谢谢!

标签: pythondjangomany-to-manydjango-select-related

解决方案


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

强文本

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

在此处输入图像描述


推荐阅读