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

MyMemoWiki

「Django 多対多関係の実装」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Django 多対多関係の実装== [Django] ===models.ManyToManyField を利用したモデル=== ====定義==== *ブックマークは複数のタグを持つ、…」)
 
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
==Django 多対多関係の実装==
+
==[[Django 多対多関係の実装]]==
[Django]
+
[[Django]] |
  
 
===models.ManyToManyField を利用したモデル===
 
===models.ManyToManyField を利用したモデル===

2020年2月16日 (日) 04:24時点における最新版

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)