【发布时间】:2012-05-15 22:29:40
【问题描述】:
我有两个模型 - 照片和标签 - 通过 ManyToManyField 连接。
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 的列表- to-many 表来创建交集列表?
【问题讨论】:
标签: django many-to-many orphan orphaned-objects