【发布时间】:2014-04-03 23:31:47
【问题描述】:
因此 django 将组声明为“将标签和权限应用于多个用户的通用方式”。我的问题是这段代码是什么样的,这段代码在哪里?
具体来说,组是否需要模型类型?任何有助于发现这些工作方式的帮助都会非常有帮助。
PS:如何将组应用到当前登录的用户?
感谢您的帮助。
【问题讨论】:
标签: python django django-models django-authentication
因此 django 将组声明为“将标签和权限应用于多个用户的通用方式”。我的问题是这段代码是什么样的,这段代码在哪里?
具体来说,组是否需要模型类型?任何有助于发现这些工作方式的帮助都会非常有帮助。
PS:如何将组应用到当前登录的用户?
感谢您的帮助。
【问题讨论】:
标签: python django django-models django-authentication
群组只不过是models。
class Player(models.Model):
name = models.CharField(max_length=100)
age = models.PositiveIntegerField()
以上,Playermodel 用于添加玩家。现在,如果您想将这些玩家分组,您可以执行以下操作:
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)
就是这样。
现在的问题是为什么要使用组?
当然,没有必要编写 group 模型,你也有其他选择。
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_injured 更新为True。 8 个被禁止,这意味着您必须将 8 个玩家的 is_banned 更改为 True。另外,你必须一遍又一遍地写下每个球员的球队的名字。这真的非常耗时。现在你看到组的重要性了吗?
这段代码在哪里?
在您的models.py 文件中。
【讨论】:
groups docs.djangoproject.com/en/dev/topics/auth/default/…
用户组是“django.contrib.auth”的一部分。 如果您将它与您的用户模型(Django 1.4 及更低版本中的任何普通用户,或 Django 1.5 或更高版本中的带有“PermissionsMixin”的自定义用户模型)一起使用,那么您将在数据库中找到名为:
每个用户都获得所有权限集
更多信息请参见django.contrib.aut。
在this post中解释了将用户添加到组
【讨论】: