我正在为我正在处理的项目中的某些对象实现文件附件。有六个左右的对象类可能合理地附加了文件(这些文件将在其详细信息视图中显示并通过链接进行管理)。模型应该是
class JobFile( models.Model):
job = models.ForeignKey( 'jobs.Job', models.SET_NULL,
null=True, blank=True, related_name='attachments', )
quote = models.ForeignKey( 'quotation.Quote', models.SET_NULL,
null=True, blank=True, related_name='attachments', )
#etc
document = models.FileField( ... ) # the attachment
与通用ForeignKey相比,这种方法的一个优点是,上传可以同时附加到一种以上的对象。另一个是参考的简单性
obj.attachments.all()
在中
obj
局部视图。我不是在寻找这些文件可能附加到的一大组对象类。
然而,对于任何一个文件附件,其大部分ForeignKeys都将为空。我看到过各种对null ForeignKeys的引用导致Django ORM查询缓慢。这有什么我需要关心的吗?
如果有任何不同,这些对象将几乎完全通过
attachments
反向ForeignKey管理器。我唯一能看到的是需要显式过滤
JobLine.objects.filter(field__isnull=True)
是在管理上下文中查找“孤立”文件(这通常不应该发生)。