如何使用__contains迭代m2m字段

时间:2013-11-01 12:27:44

标签: python django django-models

我正在尝试在模型中的3个多个字段中进行搜索,以查看用户是否在这些字段中。我在一个或所有3个字段中使用Q但我似乎无法找到实际看到结果的方法。

raid_teams = Team.objects.filter(Q(tanks__contains=profile.pk) or Q(healers__contains=profile.pk) or Q(dps__contains=profile.pk))

我可能完全以错误的方式解决这个问题。希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

__ contains用于区分大小写的包含搜索(https://docs.djangoproject.com/en/dev/ref/models/querysets/#contains),您只需要普通的id相等匹配:

raid_teams = Team.objects.filter(
    Q(tanks__id=profile.pk) |
    Q(healers__id=profile.pk) | 
    Q(dps__id=profile.pk)
)