2017-09-04 53 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

相關問題