python – 如何在django中為使用者模型新增自定義許可權?
在django中預設情況下,syncdb執行時安裝了django.contrib.auth,它會為每個模型建立預設許可權,如foo.can_change,foo.can_delete和foo.can_add.要向模型新增自定義許可權,可以新增類Meta:在模型下,並在其中定義許可權,如此處所述
我的問題是,如果我要為使用者模型新增自定義許可權,該怎麼辦?像foo.can_view.我可以用下面的程式碼片段來實現,
ct = ContentType.objects.get(app_label='auth', model='user') perm = Permission.objects.create(codename='can_view', name='Can View Users', content_type=ct) perm.save()
但是我想要一些可以很好地與syncdb一起玩的東西,例如我的自定義模型下的Meta類.我應該在類Meta中有這些:在UserProfile下,因為這是擴充套件使用者模型的方式.但是是否正確的方式呢?不會把它繫結到UserProfile模型?
你可以這樣做:
在Django應用的__init__.py中新增:
from django.db.models.signals import post_syncdb from django.contrib.contenttypes.models import ContentType from django.contrib.auth import models as auth_models from django.contrib.auth.models import Permission # custom user related permissions def add_user_permissions(sender, **kwargs): ct = ContentType.objects.get(app_label='auth', model='user') perm, created = Permission.objects.get_or_create(codename='can_view', name='Can View Users', content_type=ct) post_syncdb.connect(add_user_permissions, sender=auth_models)
http://stackoverflow.com/questions/7724265/how-to-add-custom-permission-to-the-user-model-in-django