Djangoの基礎mysqlのマルチテーブル操作

モデルの作成

 テーブルとテーブルの間の関係

    多対多のいずれかに一つ、そして、区別せずに外部キー制約および外部キー制約を追加し、操作内だと思う、自分の関係を考えて、テーブルに外部キー制約の一つ帳テーブルを公開唯一の制約は、多くの制約を追加することです。

  例:のは、次の概念、フィールドと関係を想定してみましょう

  モデルに:著者は、名前と年齢を持っています。

  モデルの詳細:誕生、電話番号、自宅住所やその他の情報の日付を含むテーブルへの著者の詳細情報の詳細が表示されます。著者と著者の詳細モデルのモデルとの1対1の関係である(1対1)

  出版社のモデル:パブリッシャは名前、都市と電子メールを持っています。

  モデル本は:本が出版物のタイトルと日付を持って、この本は、著者が多くの本を書くことができ、複数の著者を有していてもよく、その作者と本の間の関係は、(多対多)の多くには多くの関係です;この本は出版社、出版社と書籍対多の関係(1対多)によって公表されなければなりません。

  モデルは次のよう:

django.db インポートモデル

ここにあなたのモデルを作成します壁紙。


クラス著者(models.Model): 一般的にテーブル情報の内部で使用 
    NID = models.AutoField(PRIMARY_KEY = 真)(= 32 MAX_LENGTH = models.CharField 
    年齢 = models.IntegerField() 

    とauthorDetail缶テーブルの任意の2つの表に書かれたこのフィールドの1対1の関係を確立 
    =にauthorDetail = models.OneToOneFieldを(authorDetail 、to_field = NID 、on_delete = models.CASCADE) は、ユニーク+ ForeignKeyのですが、私たちは自分のパラメータa、ORMが自動的に_id上のフィールドの名前のスペルを助ける記述する必要はありません、データベースのフィールド名がauthorDetail_idです

クラス AuthorDetail(models.Model): 不常用的放到这个表里面

    NID = models.AutoField(PRIMARY_KEY = 真)
    誕生日 = models.DateField()
    電話 = models.BigIntegerField()
    のaddr = models.CharField(MAX_LENGTH = 64 

クラス公開(models.Model):
    NID = models.AutoField(PRIMARY_KEY = 真) = models.CharField(max_lengthを= 32 
    都市 = models.CharField(max_lengthを= 32 
    、電子メール = models.EmailField() 

表対多の関係は、我々は、MySQLが確立された方法を学び、手動で3番目のテーブルを作成し、二つのフィールド、別のテーブルへの外部キーに関連付けられている各フィールドの書き込みされていない2、多くの関係我々は、ORM時に手動で作成した第三のテーブルが動作するため、多対多のORM自動的に私たちは第三のテーブルを作成するのに役立ち、3番目のテーブルは、後で私たちが自動的に作成ORMをどう学習、関係を構築するには、2つの方法があります多くの関係上、テーブル間の多くのORM文法を使用することはできませんあなたが特定のテーブルを削除したい場合は、あなただけのテーブルをオフに書き、それに2つのデータベースの同期命令を実行し、自動的に削除する必要がありますA。
クラスブック(models.Model):

    NID = models.AutoField(PRIMARY_KEY = 真)
    タイトル = models.CharField(MAX_LENGTH = 32 
    publishDate = models.DateField()
    価格。 = models.DecimalField(max_digitsの= 5、decimal_places = 2。 ) 

    マルチパーティ、フィールド上に構築された公開、外部キーフィールドを持つ対多の関係、それが外部キーフィールドの場合、公開、それは自動的にint型タイプです 
    (=に= models.ForeignKeyを公開公開、to_field = NID 、on_delete = models.CASCADE) 多くのパラメータを追加することができるのForeignKey、我々はすべてのテーブルを指すように、ゆっくりと、学ぶ必要がある、to_fieldポイントあなたが関連付けられているフィールド、デフォルトでは、これを書いていません自動的に関連付けられたプライマリキーフィールド、on_deleteカスケードは削除
   フィールド名はpublish_idを書き込む必要がないフィールドの_idでこの戦い、データベース内のフィールド名が自動的にpublish_idになった場合、ORMが自動的にあなたの翻訳のForeignKeyを与える
     と著者テーブル多くの関係構築に多くの、のManyToManyField二つのモデルは、フィールドが最初に作成することですので、あなたがフィールドを見ることはできません自動的に第三のテーブルを作成し、あなたが本の表を参照してくださいことに注意して、いずれかに構築することができます3つのテーブルは意味、フィールドを作成するものではありません、私たちは、このフィールドの属性の作者がいるこの本のカテゴリーことだけ言うことができる 
    = models.ManyToManyField(=へ作者を著者、)#1 、かどうか多対多の注意最後に背中の値が文字列であるときは、このパラメータへの書き込み、またはあなたがこの場所を関連付けることを監視する必要があります 上記の表
  

 
コードの表示

 

おすすめ

転載: www.cnblogs.com/Pythonzrq/p/11231964.html