django ORM 中的多个查询

Multiple queries in django ORM

我有以下用户模型,

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.idsecond.id.

的单个成员

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