2012-04-30 53 views
0

我对Django相当陌生,以前用它来显示其他来源的数据。Django多个外键或一个足够?

我正在着手一个新项目,并对Django处理模型关系的方式进行了一次查询(做了一些搜索找不到这个具体的实例),并且想知道实现它的最有效的方法。

我有3个模型,用户(显然:S),项目和报告。现在,报告是项目的一部分,由用户完成,但项目也由用户“拥有”。其他用户无法看到其他用户的报告/项目。我需要为报告两个外键或只是一个(例如用户创建了projectA和报表1,因为报表1被链接到工程中,也与用户),即:

Class Report(models.Model): 
    user = models.ForeignKey(User) 
    project = models.ForeignKey(Project) 

Class Report(models.Model): 
    project = models.ForeignKey(Project) 

回答

1

如果报告只与用户通过项目关联(这意味着与其项目不同的用户报告没有意义),那么第二个报告更好。您将始终可以通过(report object).project.user或搜索查询'project__user'访问该用户。如果您使用第一种方法,则可能会导致报告和项目的用户数据不同步,这对您的应用程序来说没有任何意义。

+0

这就是我的想法,只是想我会确认Django会以这种方式处理它。干杯 – IainS