Django多个外键还是一个足够的?

时间:2012-04-30 21:13:08

标签: django-models django-orm

我是Django的新手,到目前为止,它已经习惯于显示来自其他来源的数据。

我正在开始一个新项目,并且询问Django处理模型关系的方式(对于这个特定的实例,有些搜索找不到多少),并且我想知道实现它的最有效方法。

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

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

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

1 个答案:

答案 0 :(得分:1)

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