Подтвердить что ты не робот

Композитный первичный ключ в django

У меня есть таблица db legacy, у которой есть составной первичный ключ. Я не думаю, что смогу изменить структуру, чтобы включить суррогатный ключ, так как есть код, который использует эту таблицу. И в django я не могу использовать эту таблицу, поскольку у нее нет первичного ключа (non-composite).

У моделей django поддерживаются составные первичные ключи? Если нет, есть ли способ обхода без изменения структуры таблицы?

P.S. Я использую postgresql.

4b9b3361

Ответ 1

Попробуйте аналогичный код ниже:

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

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

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

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

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

EDIT: Я хотел бы отметить, что существует проблема с этим подходом, если имеется 3 столбца. Обновление запросов не работает, потому что оно пытается обновить (помещает поля pk сразу после "SET" ) поля, которые уникальны вместе и, очевидно, не работают.