目前在models.py
我有
class ModelName(models.Model):
rowname = models.CharField(max_length=100, blank = True, unique=True)
就确保相同的值不会两次提交到数据库而言,这确实很奇怪,但是当重复的值是空字符串时,有没有一种方法可以让我唯一不引发错误?是否unique
接受异常参数?
目前在models.py
我有
class ModelName(models.Model):
rowname = models.CharField(max_length=100, blank = True, unique=True)
就确保相同的值不会两次提交到数据库而言,这确实很奇怪,但是当重复的值是空字符串时,有没有一种方法可以让我唯一不引发错误?是否unique
接受异常参数?
本质上,您需要遵循此答案中的建议。虽然 Django 出于唯一性的目的考虑''
equal to ''
,但它不认为NULL
equal to NULL
。所以你需要存储NULL
值而不是空字符串。
通过在模型中NULL
添加将字段更改为 allow :null = True
rowname = models.CharField(..., blank = True, null = True, unique = True)
将空字符串更改为None
以下形式:
class ModelNameForm(forms.ModelForm):
class Meta:
model = ModelName
def clean_rowname(self):
return self.cleaned_data['rowname'] or None
class ModelNameAdmin(admin.ModelAdmin):
form = ModelNameForm