Clé primaire Composite dans django
J'ai une table de base de données héritée qui a une clé primaire composite. Je ne pense pas que je serai en mesure de changer la structure pour inclure une clé de substitution, car il y a du code écrit qui utilise cette table. Et dans django, je ne peux pas utiliser cette table, car elle n'a pas de clé primaire (non composite).
Les modèles django prennent-ils en charge les clés primaires composites? Sinon, existe-t-il une solution de contournement sans changer la structure de la table?
P.S. j'utilise postgresql.
1 réponses
Essayez le code similaire ci-dessous:
class MyTable(models.Model):
class Meta:
unique_together = (('key1', 'key2'),)
key1 = models.IntegerField(primary_key=True)
key2 = models.IntegerField()
Ou si vous ne voulez que des champs mixtes uniques:
class MyTable(models.Model):
class Meta:
unique_together = (('key1', 'key2'),)
key1 = models.IntegerField()
key2 = models.IntegerField()
EDIT: je voudrais noter qu'il y a un problème avec cette approche s'il y a 3 colonnes. Les requêtes de mise à jour ne fonctionnent pas car elles essaient de mettre à jour (met les champs pk juste après "SET") les champs qui sont uniques et échouent évidemment.