现在有个模型 ,地区和用户的关系是ManyToManyField
class Zone(models.Model):
name = models.CharField(max_length=128)
users = models.ManyToManyField(User, related_name='zones', null=True, blank=True)
需求:查询一个目标地区的用户 和 查询 多个目标地区的用户。
users_in_1zone = User.objects.filter(zones__id=<id1>)
# same thing but using in
users_in_1zone = User.objects.filter(zones__in=[<id1>])
# filtering on a few zones, by id
users_in_zones = User.objects.filter(zones__in=[<id1>, <id2>, <id3>])
# and by zone object (object gets converted to pk under the covers)
users_in_zones = User.objects.filter(zones__in=[zone1, zone2, zone3])
如果结果有重复的user,则需要去重
users_in_zones = User.objects.filter(zones__in=[zone1, zone2, zone3]).distinct()