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

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

3 ответа

Решение

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

Если вы хотите, чтобы только уникальные смешанные поля вместе использовались ниже:

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()

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

Например, у вас есть база данных, содержащая вашу коллекцию CD. Одна из сущностей называется дорожками, которая содержит подробности дорожек на компакт-диске. У этого есть составной ключ названия компакт-диска, номера дорожки.

Другие вопросы по тегам