ジャンゴ:分析ORM内の外部キー関係のForeignKey

 

これは、ユーザがForeignKeyのフィールドをロール名使用して、複数のユーザに対応する文字が外部キーに属しているように、2つのテーブル、役割、ユーザが存在すると仮定し、パラメータテーブルの役割を連結する第一、第二のパラメータrelated_nameこのロールを持つ複数のユーザーが存在する逆引き参照するために使用されます。

クラスの役割(models.Model):
     '' ' 
    ロールテーブル
    ' '' 
    ROLE_NAME = models.CharField(MAX_LENGTH = 50 
    CREATE_TIME = models.DateTimeField(auto_now_add = 真)
    ステータス = models.CharField(MAX_LENGTH = 10 

    DEF  __str__ (セルフ):
         リターンself.role_nameの


クラスのユーザー(models.Model):
     「」「
    の外部キーの代わりに外部キーを意味するユーザ情報テーブルを、ユーザテーブルのフィールドのForeignKeyのROLE_NAME、複数のユーザに対応する文字
    」「」

    性別 = ' MALE '' M ' )、' 女性'' ' 
    member_code = models.CharField(max_lengthを= 20、ユニーク= 真) = models.CharField(max_lengthを= 30 
    パスワード = models.CharField(MAX_LENGTH = 256 
    ROLE_NAME = models.ForeignKey(役割、related_name = ' member_role '、デフォルト= 3 
    電子メール = models.EmailField(max_lengthを= 50 
    性別 = models.CharField(max_lengthを= 10、選択肢=性別、デフォルト= ' ' 
    CREATE_TIME= models.DateTimeField(auto_now_add = TRUE)
    状態 = models.CharField(max_lengthを= 10、デフォルト= 1 

    デフ __str__ (自己):
         戻り self.name

  

 

 

注意:

  UserテーブルはROLE_NAMEフィールド名を呼ばれ、それが外部キーであるので、それは自動的に実際のテーブルのフィールド名を追加しますが_id role_name_idと呼ばれる、idフィールド値テーブルの役割の主キー値

要件:

  人に対応するロール情報を取得します。

  コード:01010101ユーザに対応する役割名のmembe_codeを取得します

account.models インポートユーザ

デフユーザー():
    ユーザー = User.objects.get(member_code = ' 01010101 ' 
    印刷user.role_name.role_nameの

ユーザー()

 

  質問:

    それを使用するのはなぜここにuser.role_name.role_name方法はありますか?

  回答:

    user.role_nameは、Roleオブジェクトを返すので、それが再び対応するロール名.role_nameを得るために必要である、同じ時間はuser.role_name.create_timeを作成することができ、この役割を取得したいです

    しかし、オブジェクトがあるので、ロールモデルコードの可読性

     デフ__str__ (自己):
          戻りself.role_name

    実際には、それが直接、ユーザーが属する役割への直接アクセスをuser.role_nameすることができるが、そのような使用は推奨されていないバックグラウンド処理データをシリアル化する必要があり、特に後に、しかし、user.role_name戻っは時に標的配列文句を言うでしょう。

    あるいは、対応するプライマリ・テーブル・オブジェクトを取得するために、特に再取得プライマリ・テーブルのフィールドの値をオブジェクト。

 

おすすめ

転載: www.cnblogs.com/gcgc/p/11245888.html