Pythonの日59 Djangoフレームワーク、多くのテーブル運転DjangoのORM

  ##確立するために、3番目のテーブルを作成して自分自身を、多くの関係

テーブルテーブルは1対多の関係かもしれ教師と生徒は、あなたがする場合、テーブルの構築手動で関連する第3のテーブルを作成することができます

クラス:学生(models.Model) = models.CharField(= 32 MAX_LENGTH、ヌル= 真)
    年齢を models.CharField =(= 32 MAX_LENGTH、ヌル= TRUE)

クラス教師(models.Model):
    名前 = models.CharField(= 32 MAX_LENGTH、ヌル= TRUE)
    性別 = models.CharField(= 32 MAX_LENGTH、ヌル= TRUE) 

第3のテーブルの確立、会合前に2つのテーブル
のクラスTeacherToStudent(models.Model):
    STU = models.ForeignKey(' 学生'、ヌル= TRUE)
    TEAC = models.ForeignKey(' 先生'、ヌル= 真)
     クラスのメタ- :
    アメリカユニークインデックス 
        unique_together = [ ' STU '' TEAC ' )、             
    ]

   ## CRUD操作

モデルによって直接増やし。.Objects.createクラス名を加え 
models.Student.objects.createを(名= " XXX "、年齢= 12 
models.Teacher.objects.create(名 = " OOO "、性別= " Mを" 
models.TeacherToStudent.objects.create(stu_id = 1、teac_id = 1 

オブジェクトを.deleteを識別()、及び対応関係削除穿刺 
models.Teacher.objects.filter(ID = 4 ).Deleteを( )
models.TeacherToStudent.objects.filterは(teac_id = 4 ).Delete() 

異なるテーブルとして変更は別々に動作 
models.Teacher.objects.filter(ID = 3).Update(名= " XOXO " 

#の私は、学生が同時に教師の数を教えられるために求めていないか確認してください、でチャートには3つの方法があります
。#1: 
RES = models.Student.objects.filter(上記ID = 2).ALL()   は、対象と識別するために、学生
のためのRES:
     プリント(row.name)
    R = row.teachertostudent_set.all() #   逆引き)テーブルは、IDと2行のすべての学生の3分の1を表現
    するための I R:
         #1 i.teacの位(Nチェック)は、教師の対応テーブルことを示す
        プリント(i.teac.name)   学生ID 2は、すべての教師に対応する検出

:2 
RES = models.TeacherToStudent.objects.filter(stu__name = " CaOを" ).ALL( )
 に対応するすべての行の生徒の名前をチェックしてください(魔法の二重下線)のCaO
以下のためのRES:
     印刷(row.stu.name、row.teac.name)  生徒と教師の間のfind対応

3: 
RES = models.TeacherToStudent.objects.filter(stu__name = " ").values(" teac__name " 辞書が含まれ、クエリセットリストをチェックアウト
印刷)(RESを

 

おすすめ

転載: www.cnblogs.com/liangzhenghong/p/11202207.html