获取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')

如何获取特定板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)

最新更新