1
我有一個Django模型和來自。django modelform驗證從數據庫獲得字段,如果不是如果形式
class Settings(models.Model):
field_1 = models.BooleanField()
field_2 = models.CharField(max_length = 255)
和形式
class SiteSettingsForm(forms.ModelForm):
class Meta:
model = SiteSettings
我有一個HTML形式,並且當沒有檢查布爾field_1
的複選框,則第二場(field_2
)被禁用。
問題是,如果我嘗試保存表單,則表示存在錯誤,因爲field_2
爲空。
我想,如果field_2
沒有被禁用,而不是空的,要獲得錯誤,但如果field_2
被禁用,我希望表單從數據庫中取值。
我已經試過這樣:
class SettingsForm(forms.ModelForm):
class Meta:
model = Settings
def __init__(self, *args, **kwargs):
super(SettingsForm, self).__init__(*args, **kwargs)
def clean(self):
field_1 = self.data.get('field_1','')
if not field_1: # field_2 is disabled
self.data['field_2'] = self.instance.field_2 # so get from db
super(SettingsForm, self).clean()
return self.cleaned_data
的問題是,我得到一個錯誤:
This QueryDict instance is immutable
爲什麼你會嘗試把它變成'self.data'而不是'self.cleaned_data'? –