Составной / составной первичный / уникальный ключ с Django

Как вы можете создавать модели (и, следовательно, таблицы) с составным (составным) первичным/уникальным ключом с помощью Django?

3 ответов


Django не поддерживает составные первичные ключи. Вы можете создать единый составной уникальный ключ с помощью Meta.unique_together.


Если вы хотите только уникальные смешанные поля вместе используйте belowcode:

class MyTable(models.Model):
    class Meta:
        unique_together = (('key1', 'key2'),)

    key1 = models.IntegerField()
    key2 = models.IntegerField()

но если вы хотите уникальный вместе и один из столбцов быть основным, установите primary аргумент для столбца модели, аналогичный приведенному ниже коду:

class MyTable(models.Model):
    class Meta:
        unique_together = (('key1', 'key2'),)

    key1 = models.IntegerField(primary_key=True)
    key2 = models.IntegerField()

составной ключ состоит из нескольких атрибутов для уникальной идентификации вхождения сущности. Это отличается от составного ключа тем, что один или несколько атрибутов, составляющих ключ, сами по себе не являются простыми ключами.

например, у вас есть база данных коллекции компакт-дисков. Один из объектов называется tracks, который содержит детали треков на компакт-диске. Это имеет составной ключ имени CD, номер дорожки.