Django正在从多个关系中删除对象
如何在不删除实际对象的情况下从多对多关系中删除对象 示例: 我有模型Django正在从多个关系中删除对象,django,many-to-many,Django,Many To Many,如何在不删除实际对象的情况下从多对多关系中删除对象 示例: 我有模型情绪和兴趣 Mood有一个多对多字段Interest(这是一个模型。ManyToManyField(Interest)) 我创建了一个名为myu mood的mood的实例。在我的情绪的兴趣字段中,我有我的兴趣,意思是 >>> my_mood.interests.all() [my_interest, ...] 如何从my\u mood中删除my\u interest,而不删除任何一个模型实例?换句话说,如何在
情绪
和兴趣
Mood
有一个多对多字段Interest
(这是一个模型。ManyToManyField(Interest)
)
我创建了一个名为myu mood
的mood的实例。在我的情绪
的兴趣字段中,我有我的兴趣
,意思是
>>> my_mood.interests.all()
[my_interest, ...]
如何从my\u mood
中删除my\u interest
,而不删除任何一个模型实例?换句话说,如何在不影响相关模型的情况下删除关系
my_mood.interests.remove(my_interest)
注意:在执行此代码之前,您可能需要获得使用的my_mood
和my_interest
的实例。如果您需要删除所有M2M引用而不接触底层对象,则从另一个方向进行操作更容易:
interest.mood_set.clear()
虽然这不能直接解决OP的问题,但在这种情况下它通常是有用的 在您的情况下,您只需清除关系即可
my_mood.interests.clear()
然后,也许当您再次在序列化程序中创建新关系时,您可以这样做
interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()
model.field.remove(要删除的对象)
在这种情况下,使用:my\u mood.interests.remove(my\u interests)
AttributeError:“RelatedManager”对象没有属性“remove”
添加另一个条目my\u mood.interests.add(my\u interests)
尝试解决方案。。。谢谢这是怎么被否决的?虽然它没有具体解决OP的问题,但我留下了答案,因为它对在M2M上下文中处理关系的人来说特别重要,并且消除了循环实例的需要。我认为这是一个有用的相关提示。这对我很有用(我正要循环,不想)。谢谢你发帖!如果您只是在上面的回答中添加这一点,或者在模型和interest.relatedname.clear()中使用相关名称添加这一点可能会更好,因为添加会立即影响数据库,所以以后不需要保存;)