我有以下用户模型,
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()
这给了我一个错误关键字参数重复
。
有人可以帮我查询一下吗?
最佳答案
您需要将其拆分为两个 .filter(..)
调用:
PrivateRoom.objects.filter(members__id=first.id).filter(members__id=second.id).exists()
不仅因为您不能在 Python 函数调用中使用相同命名参数,而且如果这是可能的(对于 Q
对象),则意味着您正在寻找 id
均等于 first.id
和 second.id
的单个成员。
这不是您想要的:您需要两个不同的 JOIN:一个用于第一个成员,一个用于第二个成员。
关于python - django ORM 中的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53356353/