gpt4 book ai didi

python - Django 多对多关系不返回集合对象

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

我有以下用户模型

class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True, max_length=255)
mobile = PhoneNumberField(null=True)
username = models.CharField(null=False, unique=True, max_length=255)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)

它与房间有多对多关系

class Room(Base):
name = models.CharField(unique=True, max_length=255)
room_type = models.CharField(max_length=50, null=True)
users = models.ManyToManyField(User, related_name='users')

当我运行以下查询时,

rooms = user.room_set.all()

我收到这个错误,

AttributeError: 'User' object has no attribute 'room_set'

我在这里做错了什么?

最佳答案

只是因为你把related_name改成了users

users = models.ManyToManyField(User, related_name='users')

尝试使用 rooms = user.users.all() 而不是 rooms = user.room_set.all()

请注意,用 class_name 的复数形式命名 related_name 更方便,因此您可以:

class Room(models.Model)
users = models.ManyToManyField(User, <b>related_name='rooms'</b>)

如果你想使用django中的classname_set;只需删除 related_name,这样 user.room_set.all 就可以工作了

关于python - Django 多对多关系不返回集合对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614266/

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