2015-07-10 109 views
10

默認行爲似乎是新用戶沒有權限且沒有組。不過,我不想手動授予每個新用戶的基本權限,我想他們不想等我這樣做。爲新用戶授予默認權限或默認組

我應該如何爲新用戶分配默認權限?

一些類似的問題已經被問,但與一般的情況下,沒有明確的答案:

我使用python-social-auth所以我不沒有我自己的創建用戶表單和視圖,我猜是其他人設置默認權限的地方。我認爲我需要某種類型的用戶創建鉤子,但不知道最乾淨的方法是什麼。

這是無關的創建可授予用戶的默認可能的權限,但參考,

回答

9

您可以訂閱post_save信號上的用戶模型並將新創建的用戶添加到所需的組或添加權限。

from django.contrib.auth.models import User, Group 

def add_to_default_group(sender, **kwargs): 
    user = kwargs["instance"] 
    if kwargs["created"]: 
     group = Group.objects.get(name='groupname') 
     user.groups.add(group) 

而且Django上1.8+把下面的代碼到你的AppConfig.ready()

post_save.connect(add_to_default_group, sender=User) 
+3

謝謝!在我的情況下,我想我還需要['sender = settings.AUTH_USER_MODEL'](https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model)。我還使用了'group,group_created = Group.objects.get_or_create(name ='Default')'。 – jozxyqk

+0

我是新來的Django,哪個文件添加這些行? – enchance

+0

''apps.py''是上述代碼行的文件(因此是''AppConfig'') – polarise