【问题标题】:How to delete many to many relation objects in Django model如何在 Django 模型中删除多对多关系对象
【发布时间】:2021-10-24 09:09:42
【问题描述】:

我有一个模型帖子,其中包含多对多关系图像。 删除帖子后,我希望也删除所有关联的图像。

class Post(models.Model):
    images = models.ManyToManyField(Image, blank = True, related_name = 'posts')

是否有模型级联选项之类的东西,或者我必须做其他事情?

【问题讨论】:

  • 删除相关对象时,默认所有相关对象都未链接,如果要从文件系统中删除文件,请手动执行
  • 由于你使用了m2m,一张图片可以属于很多帖子。因此,即使只删除了一个帖子,您也希望删除属于多个帖子的图像?

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


【解决方案1】:

基于文档https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/

你可以使用

post = Post.objects.get(id=1)
post.image_set.clear()

删除所有 id 为 1 的帖子图片

如果你删除一个对象 Post,那么图片也会被删除

【讨论】:

  • 应该只是images,所以post.images.clear()
  • 您可以阅读我提供的链接以获得更多说明
猜你喜欢
  • 2011-09-14
  • 2010-12-21
  • 2015-08-22
  • 1970-01-01
  • 2023-03-08
  • 2012-03-16
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多