2012-11-16 9 views
24

Djangoでは、すべてのモデルはプライマリキーとして宣言されているフィールドを指す擬似属性pkを持っています。このモデルではDjangoモデルのプライマリフィールドの名前を取得

class TestModel(models.Model): 
    payload = models.Charfield(max_length=200) 

pk属性には、フィールドが主であると宣言されていない場合に生成される暗黙のidフィールドを指します。このモデルでは

class CustomPK(models.Model) 
    primary = models.CharField(max_length=100, primary=True) 
    payload = models.Charfield(max_length=200) 

pk属性は、だから私の質問は、どのように私は、フィールドの名前を取得することができ、それは主キーです明示的に定義された主キーフィールドにprimary

を指すのでしょうか?

+2

なぜそれが必要ですか? 'pk'はあらゆる状況で使用できます。 –

+1

スクリプトを使用して1つのデータベースを別のデータベースに移行する場合に必要です。 – Martin

答えて

29

を持っています。これはフィールドの名前を保持しているようです。

CustomPK._meta.pk.name 

私の場合、結果として「id」という値が得られます。 :-)

+3

pk.nameはカラム名を返さず、 "_id" postfixをスキップします。 (django 1.7でテスト済み)私はCustomPK._meta.pk.column – Oleg

1

Fieldオブジェクトは、あなたはまた、PK-属性に属性 "name" を持つことになりますprimary_key属性

​​
関連する問題