Скрытое поле меняет значение при сохранении формы django
Это моя модель
class Person(models.Model):
name = models.CharField(max_length=100, blank=True, default='')
is_ignore_validations = models.BooleanField(default=False)
и это моя форма
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ['name',
'is_ignore_validations',
]
is_ignore_validations = forms.BooleanField(widget=forms.HiddenInput(), required=False)
Использование для is_ignore_validations
находится в функции clean_name()
def clean_name():
original_name = self.data.get('name')
if not self.initial.get('is_ignore_validations'):
pattern = re.compile('^[a-zA-Z]+$')
if not pattern.match(original_name):
raise ValidationError('name must consist only of letters')
return original_name
Я инициирую свою форму с помощью request.POST
, у которой нет is_ignore_validations
.
Я хочу, чтобы он оставался таким, каким я установил его вручную в БД, но когда я использую form.save()
, он всегда меняется на False
.
Итак, во-первых, как мне сохранить is_ignore_validations
данные в БД всегда одинаковыми?
Во-вторых, является ли использование в clean_name
переменной из начальной лучшей практики - self.initial.get('is_ignore_validations')
?