2014-04-03 21 views
0

因此django聲稱組是「將標籤和權限應用於多個用戶的通用方式」。我的問題是這段代碼是什麼樣的,這段代碼在哪裏?Django:如何編寫羣組以及這些羣體的居住地點?

具體來說,是否需要組和類型的模型?任何幫助揭露這些工作如何將是非常有益的。

PS:如何將組應用到當前登錄的用戶?

感謝您的幫助。

+0

https://docs.djangoproject.com/en/dev/topics/auth/default/#permissions-and-authorization – dm03514

回答

1

組解釋都不過是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) 

就是這樣。

現在,問題是爲什麼你會使用組?

當然,沒有必要寫模型,你也有其他的選擇。

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名球員的is_banned更改爲True。另外,你必須一次又一次地寫下每個球員球隊的名字。這真的非常耗時。現在你看到的重要性嗎?

此代碼在哪裏?

在您的models.py文件中。

+0

根據OP提供的報價,我認爲他們可能指的是內置的auth' groups' https://docs.djangoproject.com/en/dev/topics/auth/default/#permissions-and-authorization – dm03514

0

用戶組是'django.contrib.auth'的一部分。 如果您將它與您的用戶模型一起使用(Django 1.4及更低版本中的任何普通用戶或Django 1.5或更高版本中的「PermissionsMixin」),那麼您將在數據庫中找到相應的表格:

  • auth_group
  • auth_group_permissions
  • auth_permission
  • auth_user_groups
  • auth_user_user_permissions

每個用戶得到的所有權限設置

  • ,以分配給用戶在auth_user_groups表
  • 用戶在auth_user_user_permissions

django.contrib.aut更多信息集團(auth_groups) 。

將用戶添加到組this post