Django:如何编写群组以及这些群体居住的地方?

时间:2014-04-03 23:31:47

标签: python django django-models django-authentication

因此,django声称群组是“向多个用户应用标签和权限的通用方式”。我的问题是这段代码是什么样的,这段代码在哪里生效?

具体来说,群组是否需要和模型类型?任何帮助揭示这些工作将如何非常有用。

PS:如何将群组应用于当前登录的用户?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

群组只是models

class Player(models.Model):
    name = models.CharField(max_length=100)
    age = models.PositiveIntegerField()

以上,Player model用于添加玩家。现在,如果你想把这些球员组成队伍,你可以做下面的事情:

class Team(models.Model):
    players = models.ManyToManyField(Player)
    team_name = models.CharField(max_length=100) 

现在,您只需要创建一个团队并继续添加玩家。很简单吧?

好的,直到现在。让我们说,今天有4场比赛,这意味着8支队伍参加了比赛。在今天比赛的总球员中,有15人受伤,10人被禁止参加下一场比赛。因此,如果你想为受伤和被禁止的球员制作小组,你可以采取以下措施:

class Injured(models.Model):
     players = models.ManyToManyField(Player)

class Banned(models.Model):
    players = models.ManyToManyField(Player)

那就是它。

现在,问题是为什么要使用群组?

当然,不需要编写模型,您也有其他选择。

class Player(models.Model):
    name = models.CharField(max_length=100)
    age = models.PositiveIntegerField()
    team = models.CharField(max_length=100)
    is_injured = models.BooleanField(default=False)
    is_banned = models.BooleanField(default=False)

现在想: 15名球员受伤,这意味着你必须更新15名球员' is_injuredTrue。 8被禁止,这意味着你必须改变8名球员和#8; is_bannedTrue。另外,你必须一次又一次地写出每个球员的名字。这真的非常耗时。现在您是否看到了群组的重要性?

此代码在哪里生效?

models.py文件中。

答案 1 :(得分:0)

用户群是' django.contrib.auth'的一部分。 如果您将它与您的用户模型(Django 1.4及更低版本中的任何普通用户,或自定义用户模型WITH" PermissionsMixin"在Django 1.5或更高版本中)一起使用,那么您将在数据库中找到名为的相应表:

  • auth_group
  • auth_group_permissions
  • auth_permission
  • auth_user_groups
  • auth_user_user_permissions

每个用户都获得所有权限集

  • 到auth_user_groups表中分配给用户的组(auth_groups)
  • 表示auth_user_user_permissions中的用户

有关详细信息,请参阅django.contrib.aut

this post

中解释了将用户添加到群组