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