2012-04-30 4 views
0

Я довольно новичок в Django, который до этого момента использовал для отображения данных из других источников.Django несколько внешних ключей или один достаточно?

Я приступаю к новому проекту и задаю вопрос о том, как Django обрабатывает отношения модели (некоторые поиски не смогли найти многого для этого конкретного экземпляра), и я задаюсь вопросом о самом эффективном способе его выполнения.

У меня есть 3 модели, пользователь (очевидно: S), проект и отчет. Теперь отчет является частью проекта и выполняется пользователем, но проект также «принадлежит» пользователю. В этом случае другие пользователи не могут видеть отчеты/проекты другого пользователя. мне нужно два внешних ключей для отчета или только один Do (например, пользователь создает Projecta и Report1, поскольку Report1 связан с проекта также связана с пользователем), то есть:

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

Смежные вопросы