python - Django多对多关系不返回集合对象
问题描述
我有以下用户模型
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)
与 Room 具有多对多关系
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.room_set.all()
尝试rooms = user.users.all()
。
请注意,使用 的复数命名related_nameclass_name
更方便,因此您将拥有:
class Room(models.Model)
users = models.ManyToManyField(User, related_name='rooms')
如果你想使用 django 之一classname_set
;只需删除related_name
,这样user.room_set.all
就可以了
推荐阅读
- amazon-web-services - 如何使用 AWS Lambda 函数为 AWS RDS 创建触发器?
- python - Python Pandas:从列分配中调用列名
- python-3.x - 将两个列表添加到另一个列表中
- java - 使用HttpClient时如何完全释放连接?
- react-native - 为什么 MongooseIM 会在 60 秒后关闭 websocket 连接?
- node.js - NodeJs:检查文件是否被锁定而不锁定文件
- r - 在 write.csv 中使用值
- cluster-computing - IPFS Cluster-如何在本地PC上添加第二个Peer
- sharepoint - SharePoint Office365 - 如何复制列表?
- ios - 使 SKShapeNode 线自行绘制