Я использую Django 3.0.6
Я добавляю ForeignKey
и ManyToManyField
к своим моделям, но я заметил, что django создает INDEX
, но не фактические ограничения FOREIGN KEY
в базе данных.
Я пытался явно установить db_constraint=True
, но, как и ожидалось, бесполезно, так как это True
по умолчанию.
Я нашел так много ответов, объясняющих это, но только для очень старых версий Django, делая трюки для его включения, когда он в противном случае был отключен. Теперь вместо этого он должен работать прямо из коробки. Ничего не нашел ВООБЩЕ относительно Django 3.
Код
class Token (models.Model):
owner = models.ForeignKey(Chiefdom, on_delete=models.CASCADE, db_constraint=True)
county = models.ManyToManyField(County, db_constraint=True)
amount = models.PositiveSmallIntegerField()
SQLite
CREATE TABLE IF NOT EXISTS Piece_token (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
amount smallint unsigned NOT NULL,
owner_id integer NOT NULL
);
CREATE INDEX IF NOT EXISTS Piece_token_owner_id_d27c77f0 ON Piece_token (owner_id);
CREATE TABLE IF NOT EXISTS Piece_token_county (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
token_id integer NOT NULL,
county_id integer NOT NULL
);
CREATE INDEX IF NOT EXISTS Piece_token_county_county_id_57802417 ON Piece_token_county (county_id);
CREATE INDEX IF NOT EXISTS Piece_token_county_token_id_e7798ae9 ON Piece_token_county (token_id);
CREATE UNIQUE INDEX IF NOT EXISTS Piece_token_county_token_id_county_id_b06b16cc_uniq ON Piece_token_county (token_id, county_id);