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

часть БД кафедры

Проблема с academic_plan_subject. В MS SQL я мог так сделать, насколько помню, чтобы первичные ключи из других таблицы могли образовать составной первичный в третьей. Можно ли в Django так сделать? И стоит ли?) Это нарисовано в dbdesign.online


Ответы (1 шт):

Автор решения: MilkyWay

Не совсем Вас понимаю. MS SQL - СУБД, Django - Framework. ORM Django умеет работать с различными СУБД по умолчанию это LiteSQL, postgresSQL, MySQL но можно и с MS SQL.

pip install django-mssql-backend

Ни кто Вам не запрещает работать с СУБД в обход ORM, хоть это и не желательно. Единственное чего Вам не стоит трогать это поле ID во всех таблицах, иначе слетит админка.

В Django не зависимо от СУБД (по умолчанию) PrimoryKey всегда ID, как я и говорил это нужно для работы панели администратора. К сожалению Вы не описали задачу которую решаете, но я предполагаю что вариант с ForegenKey должен помочь.

#models.py
class academic_plan_subject(models.Model):
    class Meta:
        constraints = [models.UniqueConstraint(fields=[id_plan,id_subject], name='some_unique_name'] 
    id_plan=models.ForeignKey(academic_plan,on_delete=models.PROTECT)
    id_subject=models.ForeignKey(subject,on_delete=models.PROTECT)
→ Ссылка