我正在尝试在模型中的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))
我可能完全以错误的方式解决这个问题。希望有人能指出我正确的方向。
答案 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)
)