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