Скрытое поле меняет значение при сохранении формы 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')?

Вернуться на верх