トップ 一覧 ping 検索 ヘルプ RSS ログイン

Django 多対多関係の実装の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Django 多対多関係の実装
[Django]

!!models.ManyToManyField を利用したモデル
!定義
*ブックマークは複数のタグを持つ、タグは複数のブックマークにつけられる
 class Tag(models.Model):
     name = models.CharField(max_length=100, db_index=True, unique=True)
  
 class Bookmark(models.Model):
     page = models.ForeignKey('Page')
     tags = models.ManyToManyField('Tag',blank=True)
!登録
*それぞれを一旦登録してから(IDが振られてから)でないと、関連が登録できない
 tag_names = request.POST.getlist("tags[]")
 tags = []
 for tag_name in tag_names:
    tag = Tag(name=tag_name)
    tag.save()
    tags.append(tag)
 
 bookmark = Bookmark()
 bookmark.save()
 
 for tag in tags:
     bookmark.tags.add(tag)