ManyToManyField を介して接続されている 2 つのモデル (写真とタグ) があります。
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: M2M孤立したエントリを削除しますか?
現時点でのソリューションは次のようになります。
for tag in Tag.objects.all():
if not tag.photo_set.select_related(): tag.delete()
ただし、データベースの増加に伴い、このスクリプトの実行時間は非常に長くなります:-P タグ テーブルからすべてのタグ ID のリストを取得し、多対多テーブルからすべてのタグ ID のリストを取得する効率的な方法はありますか?交点リストを作成するためのテーブル?