Меня интересует следующее: как можно для модели задать составной первичный ключ - состоящий из нескольких аттрибутов (полей) модели?
Пример:
from django.db import Models
class Item(models.Model):
title = models.CharField(max_length=50)
class Catalog(models.Model):
title = models.CharField(max_length=50)
class ItemCatalog(models.Model):
item = model.ForeignKey(Item)
catalog = model.ForeignKey(Catalog)
Добавить primary_key=True в оба атрибута не выйдет, поскольку django добавит в SQL DDL фразу PRIMARY KEY в обе колонки разом, а это запрещено SQL DDL:
CREATE TABLE `test_itemcatalog` (
`item_id` integer NOT NULL PRIMARY KEY,
`catalog_id` integer NOT NULL PRIMARY KEY
)
CREATE TABLE `test_itemcatalog` (
`item_id` integer NOT NULL,
`catalog_id` integer NOT NULL,
PRIMARY KEY(`item_id`, `catalog_id`)
)