5

現在models.py私は持っています

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

これは、同じ値がデータベースに2回送信されないことを確認する限り不思議ですが、重複する値が空の文字列である場合に、一意にエラーを発生させない方法はありますか?unique例外的な議論をしますか?

4

1 に答える 1

5

基本的に、この回答のアドバイスに従う必要があります。Djangoは一意性のために''等しいと見なしますが、等しいと''は見なしません。したがって、空の文字列の代わりに値を保存する必要があります。NULLNULLNULL

  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 に答える