Django从ManyToMany关系中删除对象
问题描述:
如何从多对多关系中删除对象而不删除实际的对象?Django从ManyToMany关系中删除对象
例子:
我有模型Moods
和Interest
。
'心情'有一个多对多的字段interests
(这是一个models.ManyToManyField(Interest)
)。
我创建了一个名为my_mood
的Moods
的实例。在my_moods的利益场我有my_interest
,这意味着
>>> my_mood.interests.all()
[my_interest, ...]
如何删除从my_mood my_interest,但不删除任何模型实例?换句话说,我如何在不影响相关模型的情况下移除关系?
答
my_mood.interests.remove(my_interest)
注意:您可能需要获得my_mood
和my_interest
使用Django's QuerySet API,然后才能执行此代码的实例。
答
你的情况,你可以简单地疏通关系
my_mood.interests.clear()
那么也许当你在你的序列化程序中再次创建新的关系时,你可以这样做:
interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()
,这不会将其从兴趣模型中移除? – Nayish 2011-06-13 16:23:36
@nayish不,不会的。但为什么不自己尝试呢? – DrTyrsa 2011-06-13 16:27:11
比django文档更好 – 2012-01-31 04:37:38