有没有一种简单的方法可以找到模型的所有关系(ForeignKey / ManyToManyField / OneToOneField)?

时间:2017-09-04 14:30:07

标签: django django-models

我有一个File模型我想知道这个模型的哪些实例没有在我的数据库中的任何其他模型中使用,所以我可以安全地删除它们。样本模型如下所示:

class File(models.Model):
    origin = models.FileField()

class Doc(models.Model):
    files = models.ManyToManyField(File)

class Company(models.Model):
    logo = models.ForeignKey(File)

class FileInfo(models.Model):
    file = models.OneToOneField(File)

此外,解决方案应该是动态的,以便在添加到File模型的新链接的情况下无需修改即可使用。

我尝试循环model._meta.fields,检查field.rel.to但未能生成有效版本。

1 个答案:

答案 0 :(得分:0)

你可以过滤它们:

File.objects.filter(file_info__isnull=True, doc__isnull=True, logo__isnull=True).delete()