5

目前在models.py我有

class ModelName(models.Model):
    rowname = models.CharField(max_length=100, blank = True, unique=True) 

就确保相同的值不会两次提交到数据库而言,这确实很奇怪,但是当重复的值是空字符串时,有没有一种方法可以让我唯一不引发错误?是否unique接受异常参数?

4

1 回答 1

5

本质上,您需要遵循此答案中的建议。虽然 Django 出于唯一性的目的考虑''equal to '',但它不认为NULLequal to NULL。所以你需要存储NULL值而不是空字符串。

  1. 通过在模型中NULL添加将字段更改为 allow :null = True

    rowname = models.CharField(..., blank = True, null = True, unique = True) 
    
  2. 将空字符串更改为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
    
于 2012-04-15T04:56:32.697 回答