Я ищу, чтобы ограничить набор запросов, который я могу получить через модель.Django: предельные данные модели
Предположим, у меня есть следующие модели (с зависимостями):
Company
|- Section
| |- Employee
| |- Task
| `- more models...
|- Customer
| |- Contract
| |- Accounts
| `- other great models ...
`- some more models...
Следует отметить, что мои реальные модели гораздо глубже, и это на самом деле не о бизнесе.
С контекстом процессором я добавил экземпляр компании просить:
def magic_view(request):
request.company # is a instance of Company model
Теперь мой вопрос, что это лучший способ, чтобы ограничить доступ к дочерним моделям компании к экземпляру запроса компании ?
Я мог бы сделать это как task = Task.objects.get(pk=4,section__task=task)
, но это плохо, если моя структура модели становится все глубже.
Редактировать: Я мог бы дать друг другу модель иностранного ключа компании, но разве это хорошая практика хранения отношений избыточным? Редактировать 2: Нет, это не так. См. Is it bad to use redundant relationships?.
«но это плохо, если моя модельная структура становится все глубже»? Ваша модель реляционная. Не иерархическая. Ему не нужно следовать строгой иерархии. Почему вы навязываете глубокую иерархию? Поэтому реляционная база данных не предназначена для использования. Почему? –
Компания, Раздел, Сотрудник и т. Д. Являются моделями. Таким образом, Секция имеет внешний ключ для Компании. Я мог бы дать друг другу модель иностранного ключа для компании, но таким образом отношение сохраняется дважды. – svenwltr
«Я могу дать друг другу модель иностранного ключа компании». Почему бы вам не так? Сотрудники переходят из раздела в раздел без изменения компаний. –