テーブルとテーブルの間にまず、関係
一対一:張建テーブルが可能に関係なく(OneToOneField)関係フィールドが、そのテーブルクエリ内の比較的高い周波数を構築することをお勧めします
【公開(= '公開' まで)= models.ForeignKey】
多く:(ForeignKeyの)その当事者多対多の分野で構築
どんなに張建関係テーブルができる場所(のManyToManyField)多くのフィールドが、クエリでそのテーブルを比較的高い周波数を構築することをお勧めします。多くの多くの
PSは:どのようにテーブルとテーブルの間の関係が何であるかを最終的に判断します
共感:AはBの複数を有することができます
BはAの複数を有することができます
追加や変更を削除します。番号にすることができ、それが対象となり得ます
()#のアドオンを追加
セット()#修飾
受け取っていない()#のイテラブルを削除し、オブジェクトはクエリセットをすることができます*
質量参加せずに空のクリア()#
削除カスケード削除設定します。
公開= models.ForeignKey(へ= '公開'、on_delete = models.CASCADE)
= models.ForeignKeyは、(= '公開'、on_delete = models.SET_NULL、ヌル= Trueに)公開 カスケードがTrue = nullを設定してください削除キャンセル#
CASCADE:セットカスケード削除、プレス、対応する書籍の出版を削除削除されます
SET_NULL:削除をカスケードキャンセル
順方向および逆方向の概念
モデル:
クラスブック(models.Model): タイトル = models.CharField(max_lengthを= 32 ) 価格 = models.DecimalField(max_digits = 8、decimal_places = 2 ) publist_date = models.DateField(auto_now_add = TRUE) #がに(= models.ForeignKeyを公開= '公開'、to_field = 'ID'、on_delete = models.CASCADE、) 公開= models.ForeignKey(=に' 公開'、on_delete = models.SET_NULL、ヌル= 真) 著者 = models.ManyToManyField(=へ「著者") #虚拟字段 クラス)(models.Modelを公開: 名前= models.CharField(max_lengthを= 32 ) のaddr = models.CharField(max_lengthを= 32 ) 、電子メール = models.EmailField() #对应就是varchar型类型 クラスの著者(models.Model): 名前 = models.CharField(max_lengthを= 32 ) 、年齢 = models.IntegerField() authordetail(=へ= models.OneToOneField ' AuthorDetail ' ) クラスAuthorDetail(models.Model): フォン = models.CharField(MAX_LENGTH = 32 ) ADDR = models.CharField(MAX_LENGTH = 32)
フィールド、小文字で記者逆ルックアップテーブルの名前を...によって前方クエリ
1つの
前方:著者---テーブル内の著者関連分野--->フィールドによってauthordetail
リバース:authordetail ---著者関連分野表--->著者小文字のテーブル名
正問い合わせの問い合わせジェイソン・電話番号
の問い合わせアドレスは次のとおりです。山東省の著者の名前は、ルックアップ逆
多くの
正:本の中の本---テーブルに関連するフィールドを--- >フィールドによって公開
リバース:(小文字_set.allでテーブル名によって--->本以上の本---関連分野の書籍のリストを公開)出版社が対応するよう
多対
フォワード:フィールドの著書---関連する分野での帳テーブル--->著者
リバース:著者---関連分野帳リスト--->小文字_set.all内のテーブル名の本( )ため、書籍の対応する複数の
東洋プレスを問い合わせは出版の本が多くのフィールドは、ルックアップ逆に公開され
publish_obj = models.Publish.objects.filter(名=「オリエンタルプレス」)1次回()
を印刷します(publish_obj.book_set)#のapp01.Book.Noneの
印刷(publish_obj.book_set.all())
お問い合わせジェイソンのすべての書籍、多くの分野では、逆引き書い
author_obj = models.Author.objects.filter(名= 「ジェイソン」)。まず()
印刷(author_obj.book_set)#のapp01.Book.Noneの
印刷(author_obj.book_set.all())
電話番号の問い合わせは、逆引きの110 1つの著者名フィールドで
authordetail_obj =モデル.AuthorDetail.objects.filter(電話番号= 110)1次回()
プリント(authordetail_obj.author.name)