我有两种模式:
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)
有更好/更清洁的方法吗?
答案 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
略微更改查找。