| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Django 多対多関係の実装

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

Django 多対多関係の実装

Django |

models.ManyToManyField を利用したモデル

定義

  • ブックマークは複数のタグを持つ、タグは複数のブックマークにつけられる
  1. class Tag(models.Model):
  2. name = models.CharField(max_length=100, db_index=True, unique=True)
  3. class Bookmark(models.Model):
  4. page = models.ForeignKey('Page')
  5. tags = models.ManyToManyField('Tag',blank=True)

登録

  • それぞれを一旦登録してから(IDが振られてから)でないと、関連が登録できない
  1. tag_names = request.POST.getlist("tags[]")
  2. tags = []
  3. for tag_name in tag_names:
  4. tag = Tag(name=tag_name)
  5. tag.save()
  6. tags.append(tag)
  7.  
  8. bookmark = Bookmark()
  9. bookmark.save()
  10.  
  11. for tag in tags:
  12. bookmark.tags.add(tag)