django et clé primaire composée
Bonjour tout le monde,
Voila je suis débutant en python et j'utilise django. Je suis en train de créer une application web.
Et là, je bute sur quelque chose qui je pense va vous paraître stupide m'enfin bon je suis débutant donc un peu d'indulgence :oops:...
mon problème est que je n'arrive pas à créer une classe (dans models.py donc) avec une clé primaire composé de deux champ.
Pour que vous compreniez mieux, voici la classe en question :
Code:
1 2 3 4 5 6 7 8
|
class tbIncrement(models.Model):
typeN = models.CharField(...)
codeN = models.CharField(...)
libelle = models.CharField(...)
class Meta:
db_table = u'Increment' |
Et j'aimerais que la clé primaire soit "typeN" + "codeN".
J'ai essayé différentes choses mais sans succès. C'est pourquoi je m'en remet à vous car je désespère vraiment.
Je vous remercie de votre aide.
kiradeus
idée à 3 sous, basée sur property
Si j'ai bien compris ce que vous voulez faire c'est avoir une représentation en base de la clé primaire qui soit 'différente' de celle que vous utilisez dans l'application.
i.e. clé = "typeN" + "codeN"
Les colonnes de la base sont des variables de classe et non les variables d'instances, vous avez donc la possibilité de 'masquer' le composite de la clé avec par exemple des 'properties', style:
Code:
1 2 3 4 5 6 7
| def get_type(self)
# extraire typeN de la clé
def get_code(self)
# idem pour le code
# Imaginez les setter.
type = property(fget=get_type, fset=set_type)
code = property... |
Et vous avez composé et décomposé la clé en sous-champs.
- W