pio*_*kuc 4 python django unique-constraint
我有一个codes带有相应助记符的数字列表,names我想为它们创建一个 Django 模型,因此它们names是主键,但还有一个约束,即code列中的值是唯一的。
我尝试的是以下内容:
class Constant(models.Model):
name = models.CharField(max_length=70)
name.primary_key = True
code = models.IntegerField()
description = models.CharField(max_length=100)
unique_together = (("code",),)
Run Code Online (Sandbox Code Playgroud)
我意识到这unique_together是为了在一组列中强制执行值的唯一性,但我想我会尝试只使用一个并且它似乎有效,即执行时没有错误python manage.py syncdb,但它并没有真正强制执行我想要的约束:
mysql> describe constant;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| name | varchar(70) | NO | PRI | | |
| code | int(11) | NO | | | |
| description | varchar(100) | NO | | | |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> insert into constant values ('x',1,'fooo');
Query OK, 1 row affected (0.00 sec)
mysql> insert into constant values ('y',1,'foooo');
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能确保两列中的值都是唯一的?
将唯一选项添加到您的代码字段。
class Constant(models.Model):
name = models.CharField(max_length=70, primary_key=True)
code = models.IntegerField(unique=True)
description = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |