我有以下型号:
class Group(models.Model):
member = models.ManyToManyField(Player, through='GroupMember')
name = models.CharField(max_length=20, unique=True)
join_password = models.CharField(max_length=20)
date_created = datetime.datetime.now()
def __unicode__(self):
return str(self.name)
class GroupMember(models.Model):
member = models.ForeignKey(Player)
group = models.ForeignKey(Group)
rating = models.IntegerField(default=1500)
played = models.IntegerField(default=0)
wins = models.IntegerField(default=0)
losses = models.IntegerField(default=0)
experience = models.IntegerField(default=0)
admin = models.BooleanField(default=0)
正如你所看到的,这个小组是由球员组成的。我想做的是给两个玩家,我想能够过滤包含这两个玩家的组,但我不确定如何做这种类型的查询。
对我来说,
__in
不起作用。我最后用了complex Q lookup 它工作得很好,您可以使用or
筛选条件。像这样使用:最简单的解决方案是:
注意,不能像这样使用'uu-in过滤器,因为这将导致一个或和返回不包含两个玩家的组:
如果您的
Player
模型如下所示:然后,可以执行此查询:
大致翻译为“查找所有名字与'Player1'和'Player2'匹配的玩家组”
或者可以单独获取
player
对象:相关问题 更多 >
编程相关推荐