我试图为模型中的两个主键定义唯一约束,因为它们被其他模型引用。并且 ent_ruc 不能是唯一的。必须与 ent_id 一起唯一。
class Enterprise(models.Model):
ent_id = models.CharField(
db_column='ENT_ID', primary_key=True, max_length=16, default=timestamp_id_16)
ent_ruc = models.CharField(
db_column='ENT_RUC', max_length=16)
ent_name = models.CharField(db_column='ENT_NAME', max_length=256)
ent_address = models.CharField(db_column='ENT_ADDRESS', max_length=512)
ent_type = models.CharField(db_column='ENT_TYPE', max_length=2)
class Meta:
db_table = 'ENTERPRISE'
constraints = [
models.UniqueConstraint(
fields=['ent_ruc', 'ent_id'], name='unique_enterprise')
]
但是当我运行服务器时,我收到错误:
'Enterprise.ent_ruc' 必须是唯一的,因为它是由外键引用的。 提示:在此字段中添加 unique=True 或在模型 Meta.constraints 中添加 UniqueConstraint(无条件)。
为什么 Meta.constraints 不起作用?
尝试为 ent_ruc 字段设置 unique=True ,即
ent_ruc = models.CharField(db_column='ENT_RUC', max_length=16, unique=True)