2011-10-25 23 views
11

"User"オブジェクト(デフォルトのDjangoのauthオブジェクト)のフィクスチャを持っていて、 "Profile"オブジェクトのフィクスチャを作成しようとしています。各プロファイルは、ユーザーオブジェクトと一対一の関係を持ち、そのユーザーのためにさらにカスタムのものを定義します。Django - Fixturesの外部キー

私が知る限り、フィクスチャで外部キーを扱う通常の方法は、外部オブジェクトの主キーをフィクスチャにハードコードすることです。それを避ける方法はありますか?

基本的に、私は "user":pk 'ではなく "user":username "のようなものを持つようにしています。

これを行う方法はありますか?

答えて

8

あなたはあなたのソリューションは非常に仕事がしない「自然キー」https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys

+0

を探している - これまでのところ、私が言うことができるように、auth.userモデルがデフォルトで定義された任意のunique_togetherを持っている、と私はありませんそのファイルを変更せずにナチュラルキーを使用することはできません。私は、フィクスチャ内のそれぞれのプライマリ・キー値でハードコーディングして欲しいものを達成することができますが、それは厄介なようです。何か不足していますか? – numegil

+2

さて、ユニークなTogetherは_問題ありません。問題は、Naturalキーがモデルに定義されていないことです。これはバグのようです。 はい、PKをハードコーディングすることは今のところうまくいきます。申し訳ありませんが、自分の目標を少し誤解して、自分のモデルで作業しているかのように読んでいます。 –

+1

Btw、Django UserManagerはユーザ名の自然キーを定義するようになりました(1.10のようになりましたが、おそらく遠くに戻るでしょう)。 – Eloff