gpt4 book ai didi

python - 在 Django 中检查多对多集合中的成员

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:13 25 4
gpt4 key购买 nike

我有以下用户类,

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

我有以下房间对象,

class Room(Base):
name = models.CharField(db_index=True, unique=True, max_length=255)
status = models.CharField(default=RoomStatus.ACTIVE, max_length=255, null=True)
members = models.ManyToManyField(User)
last_activity = models.DateTimeField(default=timezone.now)

我正在尝试查找用户是否作为成员出现在房间中,

user = User.objects.get(id=kwargs.get('user_id'))
room = Room.objects.get(id=kwargs.get('room_id'))

这行不通,

member = room.members.filter(user=user)

我怎样才能正确地做到这一点

最佳答案

通过单个查询,您可以过滤:

Room.objects.filter(id=kwargs['room_id'], members__id=kwargs['user_id']).exists()

或者如果你无论如何都需要 RoomUser:

room = Room.objects.get(id=kwargs['room_id'])
user = User.objects.get(id=kwargs.get('user_id'))
if user in room.members.all():
# ...
pass

您还可以为 id=user_id 过滤 room.members:

if room.members.filter(id=kwargs['user_id']).exists():
# ...
pass

关于python - 在 Django 中检查多对多集合中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com