2017-03-12 9 views
2

私は、ユーザーグループを作成し、djangoプロジェクトの管理領域からそれらにアクセス許可を割り当てることができます。私はグループを作成し、djangoのauthモジュールからGroupPermissionモデルをインポートすることで、グループにアクセス権を割り当てることもできます。djangoでプロジェクトを設定する際にグループを作成し、権限を割り当てる方法は?

私はグループを作成して、プロジェクトをセットアップするときにグループに権限を割り当てる方法があるかどうかを知りたいと思います。したがって、ユーザーのタイプがの場合、の開発者テスターおよびのプロジェクトマネージャがあります。基本的には、権限レベルの異なるユーザーグループです。私はUserモデルをカスタマイズしておらず、割り当てられたグループでしか区別できません。だから、これらのグループを作成し、私がpython manage.py migrateを実行したときにadminの権限が作成されたときのように、それらに必要な権限を割り当てる方法はありますか?

答えて

4

Groupモデルインスタンスがまだ存在しない場合は、それを定義するためにpost_migrate信号を定義することができます。

python manage.py startapp <app_name>を使用してアプリケーションを作成すると、apps.pyファイルにAppConfigクラスが作成されます。

AppConfigクラス定義で呼び出す信号を指定できます。信号がpopulate_modelsと呼ばれているとします。その場合には、以下のように見えるのAppConfigを変更します。

class AppConfig(AppConfig): 
    name = 'app' 

    def ready(self): 
     from .signals import populate_models 
     post_migrate.connect(populate_models, sender=self) 

そしてsignals.pyで

populate_models関数を定義します。

def populate_models(sender, **kwargs): 
    from django.contrib.auth.models import User 
    from django.contrib.auth.models import group 
    # create groups 
    # assign permissions to groups 
    # create users 
+0

このシグナルは、最初のマイグレーション後またはマイグレーション後に放出されますか?グループとアクセス許可が既に存在するかどうかを確認して追加する必要がありますか? –

+0

はい、シグナルは 'migrate'コールごとに発行されます。 'User'または' Group'がすでに存在するかどうかを確認する必要があります。 'get_or_create'ショートカットを使うことができます。 –

+0

また、 'User.objects.count()'がゼロであるかどうかを確認することもできます。 –

関連する問題