2010-02-16 4 views

ответ

31

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

+0

Спасибо Игнасио! Как сделать эту работу с отношениями «многие-ко-многим»? Это будет работать? – Viet

+1

Я очень заинтересован в том, что, по вашему мнению, связь между сложным уникальным ключом и отношениями «многие ко многим» ... –

+0

Скажем, у нас есть 2 объекта: учащиеся и субъекты. Студенты могут принимать множество предметов. Таблица объединений с составным первичным ключом: Таблица student_subjects: -------------------------------- student_id subject_id Это базовая техника для создания отношений n-to-n. – Viet

2

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

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

4

, если вы хотите только уникальные смешанные поля вместе использовать 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() 
Смежные вопросы