J'ai une table db 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 modifier la structure de la table?
P.S. J'utilise postgresql.
Essayez un 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 souhaitez uniquement 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 il essaie de mettre à jour (place les champs pk juste après "SET") les champs qui sont uniques ensemble et échoue évidemment.