テーブルを作成します。
#作者と本の間-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})