2017-09-04 36 views
0

我有一个File模型我想知道该模型的哪些实例未在我的数据库中的任何其他模型中使用,因此我可以安全地删除它们。该样本模型是这样的:有没有一种简单的方法找到模型的所有关系(ForeignKey/ManyToManyField/OneToOneField)?

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) 

此外,该解决方案应该是动态的,这样它会不加修改工作的情况下,当新链接到文件模型添加。

我试图循环使用model._meta.fields,检查field.rel.to但未能生成工作版本。

回答

0

你可以只进行筛选:

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

我一直在寻找'此外,该解决方案应该是动态的,这样它会不加修改工作的情况下,当新链接到文件模型added.' – AlexSec

+0

是动态很酷,但是你正在删除文件,这是更新后丢失所有文件的最好方法。 – user2021091

相关问题