我具有以下用户模型,
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
。
有人可以帮我查询吗?
答案 0 :(得分:1)
您需要将此分为两个.filter(..)
调用:
PrivateRoom.objects.filter(members__id=first.id).filter(members__id=second.id).exists()
不仅因为您无法在Python函数调用中使用 same 命名参数,而且如果可行(与Q
对象一起使用),这意味着您正在寻找对于id
都等于first.id
和second.id
的单个成员。
这不是您想要的:您需要两个不同的JOIN:一个用于第一个成员,一个用于第二个成员。