2012-10-23 8 views
7

私は、ワークフローの特定のグループと権限の存在を前提としたアプリケーションを構築しています。たとえば、「メンバー」はアプリにログインして個人データを表示および編集できますが、通常は同じ画面に表示されるノートは表示されません。 「従業員」はそれらのメモを表示して自分自身を作成または編集できますが、「メンバーマネージャー」だけが誰のメモも削除または編集できます。Djangoのグループと権限はハードコード化されているか、ブートストラップされていますか?

私の問題は、このアプリケーションのデータをブートストラップすることです。私はグループのためのJSONの治具のデータを作成することができますが、私は悪い習慣のように思えるPKをハードコードする必要があります(私が使用したいサードパーティ製のアプリケーションが同じことをしていて、問題は権限です - 私はPKをコンテンツタイプに追加する権限にPKを追加する必要があります。

post_syncdbフックを使用して初期プログラムを追加する方法については、プログラマチックな方法で追加していますが、ハードコードされたPKの問題を解決するのに役立ちます。しかし、私はこれがこの問題の最善の解決策かどうか、あるいは私がDjango GroupとPermissionのコンセプトを "乱用している"場合、新しいモデルの作成やフラグの設定( "私のユーザープロファイルモデルなどで

答えて

0

という名前のアプリケーションを作成します。initializeの管理コマンドで通常はinitという名前のアプリを作成し、アプリケーションをブートストラップするためのコードをすべて入れました。

  • デプロイメントツールを(私は[Ansible](http://www.ansible.com/homeを使用して、バットがエイミーツールファブリックすることができ、bashの...)を使用する場合は、プロセスを自動化し、TEHからinitアプリを削除することができます。これは、次のことができますプロビジョニング後にインストールしたアプリ(最初のインストール)

または

  • チェックコマンドは、すでに(Group.objects.all().exists()?)プロセスをスキップするように起動された場合

(またはその両方)

このソリューションは非常に簡単で、どんな状況でも十分に強力であることがわかりました。

post_syncdb(djang 1.7でpost_migrate)だけデータをロードおよび/またはレコードを作成する必要がある場合は、各移行

のために呼ばれているようなソリューションではありません(つまり、グループ/管理者...)最善の解決策の私見使用中 データ移行](https://docs.djangoproject.com/en/1.7/topics/migrations/#data-migrations

関連する問題