python - 如何正确删除特定的 ManyToMany 关系?

标签 python django django-models many-to-many

我与我的一个模型建立了多对多关系。在删除一个 child 时,我想删除关系但保留记录,因为它可能被其他对象使用。在调用删除 View 时,出现 AttributeError 错误:

Exception Value: 'QuerySet' object has no attribute 'clear'

这是我的模型.py:

class Feed(models.Model):
    username = models.CharField(max_length=255, unique=True)

class Digest(models.Model):
    name = models.CharField(max_length=255)
    user = models.ForeignKey(User)
    items = models.PositiveIntegerField()
    keywords = models.CharField(max_length=255, null=True, blank=True)
    digest_id = models.CharField(max_length=20, unique=True)
    time_added = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=1)
    feeds = models.ManyToManyField(Feed)

以及 views.py 的相关部分:

def feed_delete(request, id):
    digest = get_object_or_404(Digest, id=id)
    if digest.user == request.user:
        Feed.objects.get(id=request.POST.get('id')).digest_set.filter(id=id).clear()

    return HttpResponseRedirect(digest.get_absolute_url())

最佳答案

清除摘要实例上的字段

digest = get_object_or_404(Digest, id=id)
if digest.user == request.user:
  digest.feeds.clear()
  #do your processing

回应您的评论。

digest = get_object_or_404(Digest, id=id)
if digest.user == request.user:
  feed=digest.feeds.get(id=2)#get an instance of the feed to remove
  digest.feeds.remove(feed)#remove the instance 

希望这对您有所帮助!

关于python - 如何正确删除特定的 ManyToMany 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902487/

相关文章:

python - 返回具有多个键的字典中的最大值

python - 安装基于 pyproject.toml 的项目所需的错误 : Could not build wheels for pandas,

python 日志记录 - 消息未显示在 child 中

django - 使用 GenericForeignKey 与多表继承与 OneToOneField 的优缺点是什么?

python - Django admin 中的多张图片上传

python - 如何动态更新 Django 中的模型?

python - 完成这个任务需要什么代码?

python - Django:如何使用自定义模板制作表单?

django-models - 如何添加新模型并使用 South 0.7.2 生成迁移?

python - 你如何从 Django PostgreSQL ArrayField 中获取字符串?