我有两个模型 - 照片和标签 - 它们通过ManyToManyField连接。高效删除Django中的孤立m2m对象/标签
class Photo(models.Model):
tags = models.ManyToManyField(Tag)
class Tag(models.Model):
lang = models.CharField(max_length=2)
name_es = models.CharField(max_length=40)
name_en = models.CharField(max_length=40)
每隔一段时间,我们会收到孤立的标签,这些标签不再被任何照片引用。有没有一种有效的方法来删除这些标签?我知道这样的回答: Django: delete M2M orphan entries?
而我们的解决方案在目前看起来是这样的:
for tag in Tag.objects.all():
if not tag.photo_set.select_related(): tag.delete()
然而,随着数据库,该脚本的运行变得令人不安的高:-P是否有从标签表中获取所有标签ID列表的有效方法,然后从多对多表中获取所有标签ID列表以创建交集列表?
美丽的解决方案 - 工程就像一个魅力!谢谢! –
@Nasmon不用客气。很高兴它有助于=) – okm
@Nasmon但你何时/在哪里运行此代码? – dialex