Bonjour!
Je cherche dans la partie administration de Django à modéliser des utilisateurs qui sont autorisés à se connecter sur certains services de certains serveurs.
Donc au niveau DB, j'ai modélisé ça par trois tables, User, Server, et Service, et une quatrième qui contient des clefs vers un atribut unique de chacune des trois tables précédentes.
Dans le models.py de Django, j'ai écrit ça comme ainsi:
Tout marche impécable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 from django.db import models class Server(models.Model): hostname = models.CharField(max_length=20) system = models.CharField(max_length=20) server_description = models.CharField(max_length=100) def __unicode__(self): return self.hostname class User(models.Model): user_name = models.CharField(max_length=20) login = models.CharField(max_length=20) def __unicode__(self): return self.user_name class Service(models.Model): service_name = models.CharField(max_length=20) service_description = models.CharField(max_length=20) def __unicode__(self): return self.service_name class Access(models.Model): service_name = models.ForeignKey(Service) hostname = models.ForeignKey(Server) user_name = models.ForeignKey(User)
Juste un truc que je ne comprends pas:
Chaque champs de la table Access au niveau MySQL me renvoit les id (indexes primaires des tables auto-increment) des champs correspondants des autres tables.
Par exemple, si j'autorise toto sur le server server_toto et le service service_toto j'aurais le champs toto_id, server_toto_id et service_toto_id dans Access.
Vu la façon dont j'ai implémenté ma classe Access, je m'attendais plutôt à retrouver toto, server_toto, service_toto pour ce champs.
Ce qui me parait un peu bancal? Que se passe-t-il si je cherche à optimiser par exemple la table server? du coup les id se réarangent dans un autre ordre, mais rien n'indique que la table access va être modifiée en conséquence.
Je serais nettement plus à l'aise si Access contenait des vraies caractéristiques de mes objets, et non des id primaires.
Y a-t-il une solution?
Ma question est-elle justifiée? Ou bien aucun souci pour stocker des id primaires pour à terme faire des jointures entre les 3 premières tables?
Merci de vos réponses!
Partager