PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Clé primaire composite dans Django

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 ne souhaitez 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 ensemble et échouent évidemment.