Django cannot insert duplicate key value NULL
我需要在
1 2 3 4 5 | class Intake(models.Model): id = models.AutoField(primary_key=True) enc_id = models.IntegerField(blank=True, null=True, unique=True) enc_date = models.DateField(null=True) enrollment = models.ForeignKey('Enrollment') |
尝试在没有
1 | django.db.utils.IntegrityError: ('23000',"[23000] [FreeTDS][SQL Server]Violation of UNIQUE KEY constraint 'UQ__caseload__E136D21F4222D4EF'. Cannot insert duplicate key in object 'dbo.caseload_intake'. The duplicate key value is (<NULL>). (2627) (SQLExecDirectW)") |
号
根据我读到的内容(包括这一点和一些解决了的django问题),拥有EDOCX1[2]应该允许我有重复的空值,但不能执行。为了以防万一,我重新创建了数据库,但它仍然会引发完整性错误。
我运行的是Django1.10和MS SQL Server 10。有什么想法吗?
罗茜
对于我来说,有一个唯一的字段,其中可以有重复的空值,这没有多大意义。你能消除约束并用其他方法强化这条规则吗?
例如,您可以重写方法save以便执行该操作。
1 2 | def save(self, *args, **kwargs): # place your logic here |
我希望这是有道理的,但是在数据库级别上的规则(如您定义的规则)是非常有限的。