Je cherche de manière à limiter le jeu de requête que je peux traverser dans un modèle.Django: limitation des données du modèle
Supposons que j'ai les modèles suivants (avec dépendances):
Company
|- Section
| |- Employee
| |- Task
| `- more models...
|- Customer
| |- Contract
| |- Accounts
| `- other great models ...
`- some more models...
Il convient de noter que mes modèles réels sont beaucoup plus profondes et ce n'est pas vraiment sur les affaires.
Avec un processeur de contexte, j'ai ajouté une instance de la société pour demander:
def magic_view(request):
request.company # is a instance of Company model
Maintenant, ma question est quelle est la meilleure façon de limiter l'accès aux modèles de l'enfant de la société à l'instance de demande de la société ?
Je pourrais faire comme task = Task.objects.get(pk=4,section__task=task)
, mais c'est un mauvais moyen si la structure de mon modèle devient plus profonde.
Modifier: Je pourrais donner à chaque autre modèle une clé étrangère à la société, mais est-ce une bonne pratique pour stocker des relations redondantes? Éditer 2: Non, ce n'est pas le cas. Voir Is it bad to use redundant relationships?.
"mais c'est un mauvais moyen si ma structure de modèle devient plus profonde"? Votre modèle est relationnel. Pas hiérarchique. Il n'a pas besoin de suivre une hiérarchie stricte. Pourquoi imposes-tu une hiérarchie profonde? La base de données relationnelle n'est pas destinée à être utilisée pour cette raison. Pourquoi le faire? –
Société, section, employé et ainsi de suite sont des modèles. Donc, Section a une clé étrangère à la Société. Je pourrais donner à chaque autre modèle une clé étrangère à la compagnie, mais de cette façon la relation est sauvée deux fois. – svenwltr
"Je pourrais donner à chaque autre modèle une clé étrangère à la compagnie" Pourquoi pas vous? Les employés passent d'une section à l'autre sans changer d'entreprise. –