これは、ユーザが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戻っは時に標的配列文句を言うでしょう。
あるいは、対応するプライマリ・テーブル・オブジェクトを取得するために、特に再取得プライマリ・テーブルのフィールドの値をオブジェクト。