Djangoの2つのフィールドからプライマリキーを作りたいと思います。
Djangoで2つのフィールドを持つ主キーを作成しますか?
フィールドは、私はこれを行うことができますどのよう
- current Time
- userId
下回っています?
Time + userid {PK } [ Current Time + userid]
ありがとうございます!
Djangoの2つのフィールドからプライマリキーを作りたいと思います。
Djangoで2つのフィールドを持つ主キーを作成しますか?
フィールドは、私はこれを行うことができますどのよう
- current Time
- userId
下回っています?
Time + userid {PK } [ Current Time + userid]
ありがとうございます!
ほとんどの場合、主に複数の列のキーをプライマリキーにする必要はありません。
Djangoはサロゲートキーに最も適しています。すなわち、id
という自動インクリメントフィールドが自動的に定義され、プライマリキーに設定されます。それはほぼすべての用途に適しています。
2つ以上のフィールドにわたってモデルに固有の制約を適用する必要がある場合は、Meta
クラスのunique_together
設定を使用できます。
これはDjangoに組み込まれていません(#373を参照)。説明についてはhttp://code.djangoproject.com/wiki/MultipleColumnPrimaryKeysの下部を参照してください。私は後世のためにここに "代替の方法"のセクションをコピーしました。
代替方法
notnotpeter:現在、あなたはジャンゴで プライマリにキーのいずれかを宣言し、モデルにユニーク 制約を追加することで、それは 「偽」することができます。 (もっと 情報...例を必要ですか?)
MJM:私はここで提案されているものを理解し 場合、使用する 非化合物固有のキーがある場合にのみ機能します。 このように、 は、自然に のCKをDjangoに組み込む設計を絞り込むことができますが、CKのみを持つ既存のスキーマ を使用するには、 を使用しないでください。
djansoft: を一意に使用して行うことができます。
Tobu:キーは1つしか使用できません。 A イラストレーションの使用例: 名前空間タグ?名前空間と名前の で作られたCKを持つモデル。キー のキーは、名前空間にすることはできません。 があいまいなので、 という名前をキーにすることはできません。唯一の解決策(と私は それは悪いモデリング とカウンターで シリアル化されるデータベースアクセスを強制的に)嫌いです) AutoFieldを使用するか?
toszter:ナッツの私を呼び出すが、なぜ が Djangoは次の3本のPKだけのハッシュ だ「隠された」 pk_composite列を作成するために使用する、モデル内の 主キーとして任意の数の列を宣言しません行の値は? pkのルックアップを実行すると、 の値の組み合わせが の値が主キーであるとします。何もない場合は、何も です。だから、あなたは完全なpk_compositeを作成 に必要な値に応じて を検索する場合、ハッシュ は常に計算し、ハッシュ アルゴリズムが公開されている場合は、 URLをオフに使用することができ、DBでクエリ文字列 検索し、ちょうど約どこでも。 私の心の中ではかなりシンプルに見えますが、 もう一度私は偉大にならないでしょう 詳細はこちら。
つまり、私はテーブルにIDを作成し、プライマリキーにします。次に、user_id +タイムスタンプに一意の制約を追加します。キーは、単一列でなければならない場合
:
IDが追加され、「アウトオブボックス」(variable.id)と現在の時間だけyourappに
from django.db import models
date = models.DateTimeField(auto_now_add=True)
を追加します/models.py
あなたは2つの値を持っていますので、魔法のうちあなたが望むどんな形ででもあなたのキーを作ることができます。
マルチカラムキーが必要な場合は、もう一方の答えをお読みください。あなたを助けることを願っています。
実際にuseridフィールドは、私がこれを行う方法が混乱しているという理由で、ユーザーテーブルの主キーです。 – junto
サロゲートキーの動作を理解するには、この[リンク](http://stackoverflow.com/questions/16800375/how-can-set-two-field-primary-key-for-my-models-in-django)を参照してください。 .. – Jeril
「ほとんどの時間」はいつですか?どうも –