Django の、Model の ManyToMany の 全削除した後、追加する方法がわからず、
調べた結果を記載します。
やりたいことは、関連エンティティ
のリレーションの全削除で、
Model自体は削除せず残しておきたいになります。
Django: remove all m2m relations - Stack Overflow
-
関連の削除
StackOverFlow の記載のコピー&ペーストになりますが、
以下のようなModelがあるとして、
class Post(models.Model): title = models.CharField(max_length=100) tags = models.ManyToManyField(Tag, blank=True)
tags
のデータを削除するには、clear
メソッドを使えばいいようです。
for post in Post.objects.all(): post.tags.clear()
-
関連の追加
以下でadd
メソッドでできます。
post.tags.add(tag)
-
補足
clear
メソッドも、add
メソッドも、実行後にsave
メソッドの実行は不要で、
with transaction.atomic():
とかしていなければ、実行時に変更が反映されるようです。1
[1].関連エンティティに対するクエリ発行になるので、通常のフィールドと動きが異なるということでしょうか? なんか納得しました。
以上です。
コメント