Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django正在从多个关系中删除对象_Django_Many To Many - Fatal编程技术网

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()中使用相关名称添加这一点可能会更好,因为添加会立即影响数据库,所以以后不需要保存;)