我的型号:
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')
如何获取特定板id的所有members
用户?我想在我的输出中使用板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)