多くのテーブル - ジャンゴの作成と挿入

テーブルを作成します。

作者と本の間-many関係     
クラスの著者(models.Model):
     '' ' 
    テーブルの上に
    ''' 
    NID = models.AutoField(PRIMARY_KEY = 真) = models.CharField(verbose_name = ' 著者'、 32 = MAX_LENGTH テーブルのフィールドに直接のManyToManyFieldを作成するための最初の方法を(ORMは自動的に私たちは、このアプローチをお勧めし第三のテーブルを作成するのに役立ちます) 
    (=へauthor2books = models.ManyToManyField ブック



クラスの書籍(モデル。モデル):
     '' ' 
    本のタイトル
    ' '' 
    NID = models.AutoField(PRIMARY_KEY = 真)
    タイトルModels.CharField =(verbose_name = ' ブック名'、MAX_LENGTH = 32 
    PID = models.ForeignKey(= verbose_name ' プレスID ' =に、' プレス'、to_field = ' NID '、on_delete = models.CASCADE) 

の第3のテーブルを2クロックを作成し、手動でクラスBooks2Author(models.Model):      '' '      対応テーブルの本     '''      NID = models.AutoField(PRIMARY_KEY = TRUE)      AID = models.ForeignKey(verbose_name = '著者ID'、= '著者'と 、to_field = 'NID')      入札= models.ForeignKey(verbose_name = '书籍ID' = 'ブック' には、to_field = 'NID')

データを追加します

#の編集ライターは
DEF edit_author(要求):
    著者のIDを取得します 
    上記は、ID = request.GET.get(言及' 上記のIDを述べた' GETすべての書籍 
    books_lst = models.Books.objects.all()
    取得するには、オブジェクトIDの作者に応じ 
    author_info =をmodels.Author.objects.filter(PKは= 1次回上記IDを述べた)()

    IF request.method == POST #は、新しい名前の上を通過させ、フロント取得 
        名前= request.POST.get(名前#は、フロントエンドの取得書籍が上を通過 
        book_lst = request.POST.getlist(ブックス" 新しい名前で、現在の名前の更新 
        author_info.nameを= 名前の
         #は、データの保存
        (author_info.saveを)
         SETはすべて、元の本の現在のメソッドを削除し、先端を挿入しますが、書籍のリスト上を通過(パラメータリストタイプ)
        author_info.author2books.set(book_lst)
        Addメソッドは、対応表の本や図書の上にフロント通過に追加されます。重複レコードを挿入を与えられている場合(個々の要素のためのパラメータは、複数の中に挿入することができる)
        #1 author_info.author2books.add(* book_lst)
        を返す(リダイレクトを/ author_lst / 

    を返すレンダリング(要求、edit_author.html  { ' books_lst ':books_lst、' author_info':author_info})

 

おすすめ

転載: www.cnblogs.com/wtil/p/11480784.html