Django ORM中的多个查询

梅丽莎·斯图尔特(Melissa Stewart)

我有以下用户模型,

class User(AbstractBaseUser, PermissionsMixin, Base):
    email = models.EmailField(db_index=True, unique=True, max_length=255)
    mobile = PhoneNumberField(null=True)

和房间模型,

class Room(Base):
    name = models.CharField(db_index=True, unique=True, max_length=255)
    members = models.ManyToManyField(User)

我想检查是否存在同时包含a和b的房间。我试过了

PrivateRoom.objects.filter(members__id=first.id, members__id=second.id).exists()

这给我一个错误keyword argument repeated有人可以帮助我进行查询。

威廉·范昂塞姆

您需要将此分为两个.filter(..)调用:

PrivateRoom.objects.filter(members__id=first.id).filter(members__id=second.id).exists()

不仅因为您不能在Python函数调用中使用相同的命名参数,而且如果可能(与Q对象一起使用)是可能的,这意味着您正在寻找一个id都等于first.id和的成员second.id

这不是您想要的:您想要两个不同的JOIN:一个用于第一个成员,一个用于第二个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章