2012-03-30 6 views
4

this questionに記載されている方法を使用して、私のdjangoプロジェクトの初期ユーザーを読み込みます。inital_data.jsonを使用してDjangoを読み込む

これは、1つの許可レコードは次のようになりますユーザー権限、保存します。

{ 
"pk": 56, 
"model": "auth.permission", 
"fields": { 
    "codename": "change_somemodel", 
    "name": "Can change some model", 
    "content_type": 19 
} 

そして、ユーザレコード:

{ 
"pk": 2, 
"model": "auth.user", 
"fields": { 
    "username": "some_user", 
    "first_name": "", 
    "last_name": "", 
    "is_active": true, 
    "is_superuser": false, 
    "is_staff": true, 
    "last_login": "2011-09-20 06:36:54", 
    "groups": [], 
    "user_permissions": [ 
    10, 
    11, 
    19, 
    20, 
    21, 
    1, 
    2, 
    56, 
    ..., 
    ], 
    "password": "sha1$e4f29$fcec7f8bb930d98abdaaa3c0020220f413c4c1f5", 
    "email": "", 
    "date_joined": "2011-03-15 06:01:41" 
} 

が上変更するコンテンツタイプ外部キーのいずれかの可能性があるが将来のインストール?モデルやアプリが追加されたのはどうですか?たとえば、コアアプリケーションにモデルを追加した後、再利用可能なアプリケーションがsettings.pyに追加されているとします。これらのアプリケーションは新しいインストールでcontent_type_idが異なるでしょうか? content_typeテーブルを初期データに含めることはできますか、それとも他の問題を引き起こす可能性がありますか?

複数の初期ユーザーをデータベースに読み込む信頼できる方法でない場合は、どのような選択肢がありますか?

答えて

7

チェックNatural Keys ./manage.py dumpdata -n auth.Userのような-n w/dumpdataを使用する

+0

感謝を人間が読める形式のファイルを取得することを確認するために--indent Nオプションを使用する必要があります。私は自然のキーを知らなかった。しかし、この場合、動作していないようです。私はdumpdataを使って 'auth'アプリからのデータだけを取得しましたが、syncdbでこのエラーが発生しました:IntegrityError:columns content_type_id、codenameは一意ではありません。 – AgDude

+0

私はこの問題を解決しました。ありがとうokm。私は最初にあなたの指示に十分に近づいておらず、治具からユーザーだけでなく権限もロードしようとしていました。 – AgDude

7

実際には、この作業を行うためにコンテンツタイプを除外する必要があるかもしれません。さらに、ユーザーまたはグループのデータがある場合は、それらのデータもダンプする必要があります。コンテンツタイプを除外する詳細については、threadを参照してください。

私のアプリケーションでは、manageData dumpdataで生成されたフィクスチャで作業するためにloaddataまたはtestに次のコマンドを使用する必要がありました。また、あなたはおそらく(Nは、インデントのためのスペースの数である。)あなたは、ポインタのため

./manage.py dumpdata -n --indent 4 -e contenttypes appName auth.Group auth.User > initial_data.json 
関連する問題