Django从单独的模型中选择用户

时间:2013-05-08 01:20:01

标签: django model

我有两种模式:

class PlayerPermissionGroup(models.Model):
  player = models.ForeignKey(Player)
  name = models.CharField(max_length=200)

class PlayerPermissionGroupMember(models.Model):
  permission_group = models.ForeignKey(PlayerPermissionGroup)
  user = models.ForeignKey(User)

目前,要获取权限组中的所有成员,我会这样做:

getMembers(group):
  group_member_ids = (PlayerPermissionGroupMember.objects.filter(permission_group=group)
                                                         .values_list('user__id'))
  return User.objects.filter(pk__in=group_member_ids)

有更好/更清洁的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以将related_name添加到FK User

class PlayerPermissionGroupMember(models.Model):
  permission_group = models.ForeignKey(PlayerPermissionGroup)
  user = models.ForeignKey(User, related_name='player_permision_groups')

然后你可以这样做:

getMembers(group):
  return User.objects.filter(player_permision_groups__permission_group=group)

您可以省略related_name但使用django指定的默认related_name略微更改查找。