【发布时间】:2021-04-10 17:06:01
【问题描述】:
我开始将 Django 与 sqlite 一起使用,我想对表中两个字段的组合施加一个简单的唯一约束。为此,我使用了 Django 的 UniqueConstraint 类。然而,令我惊讶的是,约束并没有插入到数据库中的表模式中。我的 Django 模型如下所示:
from django.db import models
class Fruit(models.Model):
fruit_id = models.IntegerField(primary_key=True)
fruit_type = models.CharField(max_length=64, default='', blank=True, null=False)
fruit_name = models.CharField(max_length=128, default='', blank=True, null=False)
class Meta:
models.UniqueConstraint(fields=['fruit_type', 'fruit_name'], name='unique_fruit_type_name')
db_table = 'fruit'
迁移后,我通过执行检查数据库中的架构:
select sql from sqlite_master where type='table';
对于有问题的表,结果如下:
CREATE TABLE "fruit" ("fruit_id" integer NOT NULL PRIMARY KEY"fruit_type" varchar(64) NOT NULL), "fruit_name" varchar(128) NOT NULL
我期待得到:
CREATE TABLE "fruit" ("fruit_id" integer NOT NULL PRIMARY KEY"fruit_type" varchar(64) NOT NULL), "fruit_name" varchar(128) NOT NULL, UNIQUE (fruit_type, fruit_name)
UNIQUE 子句去哪儿了?它不应该在架构中吗?
【问题讨论】:
标签: django sqlite constraints schema unique