Django如何从带有额外字段的ManyToManyField中删除?

Posted

技术标签:

【中文标题】Django如何从带有额外字段的ManyToManyField中删除?【英文标题】:Django how to delete from ManyToManyField with extra field? 【发布时间】:2013-06-05 16:02:04 【问题描述】:

在我的 django 应用程序中,我设置了与 django 网站上的这些模型类似的模型 - Extra fields on many-to-many relationships。在页面的下方,我阅读了

remove() 方法因类似原因被禁用。但是,clear() 方法可用于删除实例的所有多对多关系:

如果删除方法被禁用,那么如何从多对多字段中删除对象?它说我可以使用 clear 方法删除所有内容,但我只想从 manytomany 字段中删除一个特定元素。

【问题讨论】:

【参考方案1】:

您可以删除中间模型上的实例。

来自 djangoproject 中提供的示例:

m_qs = Membership.objects.filter(person=person, group=group) #or some other logic to filter
try:
    m = m_qs.get() #assuming queryset returns only 1 element
    m.delete()
except:
    pass #handle more gracefully 

【讨论】:

好的,谢谢。在 ipython 中,我也可以看到 delete() 方法。删除和删除有区别吗?我应该使用其中一个吗? 对不起..我的错误。发帖前应该审核过的。是delete() 不是remove()

以上是关于Django如何从带有额外字段的ManyToManyField中删除?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DRF + django-rest-auth 中使用自定义用户模型保存注册时的额外字段

如何在 django 注册表单中添加额外的字段?

如何在 Django 中通过 group by 获得额外的列?

Django 将额外字段添加到从模型生成的 ModelForm

带有来自模型的额外信息的 Django 渲染单选按钮选项

如何使用 django 向默认 auth_user 模型添加额外的模型字段