目前在models.py
我有
class ModelName(models.Model):
rowname = models.CharField(max_length=100, blank = True, unique=True)
这在确保相同的值不会两次提交到数据库方面确实很神奇,但是有没有一种方法可以让唯一值在重复值为空字符串时引发错误?unique
接受例外参数吗?
从本质上讲,您需要遵循此答案中的建议。虽然 Django 认为''
等同于''
,但它并不认为NULL
等于NULL
。因此,您需要存储NULL
值而不是空字符串。
-
通过在模型中添加
null = True
,更改字段以允许NULL
: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