Я полагаю, form
- это ModelForm
из-за тега в вопросе.
Поскольку ModelForm
выполняет проверку модели при вызове is_valid()
, этого должно быть достаточно, чтобы убедиться, что экземпляр модели, который будет проверяться, уже содержит какие-либо скрытые изменения, которые вы хотите внести перед вызовом is_valid()
.
Вы можете сделать это, изменив form.instance
своими изменениями, прежде чем позвонить is_valid()
.
Более общее решение для внесения таких изменений в самой форме:
class PresetAttrsModelForm(ModelForm):
def __init__(self, *args, **kwargs):
preset_attrs = kwargs.pop('preset_attrs', None)
# Sets up self.instance, among other things
super(ModelForm, self).__init__(*args, **kwargs)
if preset_attrs:
for attr, value in preset_attrs.items():
setattr(self.instance, attr, value)
class MyModelForm(PresetAttrsModelForm):
class Meta:
model = MyModel
form = MyModelForm(preset_attrs={'account': request.account})