python - 从 django 中的多到多字段获取信息
问题描述
我的模型:
class User_Detail(models.Model):
username = models.CharField(max_length=50, unique=True, null=False)
email = models.EmailField(unique=True, null=False)
password = models.CharField(max_length=50)
auth_token = models.CharField(max_length=100, default=None, null=True)
class Board(models.Model):
unique_id = models.CharField(max_length=100, null=False, unique=True)
created_by = models.ForeignKey(User_Detail, on_delete=models.CASCADE, related_name="board_creator")
name = models.CharField(max_length=100, null=False, unique=
True)
# membership
class UserBoardMapping(models.Model):
user = models.ManyToManyField(User_Detail)
board = models.ManyToManyField(Board)
user_type = models.CharField(max_length=10, choices=USER_TYPE, default='moderator')
如何获取members
具有特定板 id 的所有用户?我想在我的输出中使用板 id 的用户信息。
解决方案
我认为您的模型结构不正确。因为您使用 2 多对多关系来映射用户和董事会之间的关系,所以一个就足够了。如果你想存储类似的附加信息is_moderator
,那么试试这样用through
.
class User_Detail(models.Model):
username = models.CharField(max_length=50, unique=True, null=False)
email = models.EmailField(unique=True, null=False)
password = models.CharField(max_length=50)
auth_token = models.CharField(max_length=100, default=None, null=True)
class Board(models.Model):
unique_id = models.CharField(max_length=100, null=False, unique=True)
created_by = models.ForeignKey(User_Detail, on_delete=models.CASCADE, related_name="board_creator")
name = models.CharField(max_length=100, null=False, unique=
True)
users = models.ManyToManyField(User_Detail, through='UserBoardMapping')
# membership
class UserBoardMapping(models.Model):
user = models.ForeignKey(User_Detail, on_delete=models.DO_NOTHING, related_name='boards')
board = models.ForeignKey(Board, on_delete=models.DO_NOTHING, related_name='users')
user_type = models.CharField(max_length=10, choices=USER_TYPE, default='moderator')
然后你可以查询User_Detail
这样的Board
:
board = Board.objects.first()
users = User_Detail.objects.filter(boards__board=board)
推荐阅读
- javascript - Macbook / Safari 上的图像拉伸,所有屏幕尺寸
- php - 无法保存数据
- spring - Autowire 无法与控制器 Spring Boot 一起使用
- hibernate - 休眠刷新模式
- sql-server - 想要在 SQL Server 检查约束中添加正则表达式以仅输入字符而不是任何数字甚至不包括任何数字字符
- android - 我如何从任何健康乐队获取卡路里数据?
- c++ - 在循环条件下处理 size_t 下溢的成语
- gremlin - 有没有办法在 asyncio Python 应用程序中使用 Gremlin?
- user-interface - 如何在代号1的UI界面下面设计这个
- database - 将服装数据库与 WP 数据库合并