Django 保存前更改表单字段值

Django 保存前更改表单字段值,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我有一张表格: class ReferencesForm(forms.ModelForm): error_css_class = 'error' #set some css when an error contactName = forms.CharField(label='Contact Name:') company = forms.CharField(label='Company:') address = forms.CharField(label='

我有一张表格:

class ReferencesForm(forms.ModelForm):

    error_css_class = 'error'   #set some css when an error
    contactName = forms.CharField(label='Contact Name:')
    company = forms.CharField(label='Company:')
    address = forms.CharField(label='Address:')
    telephoneNumber = forms.CharField(label='Telephone Number:')

    class Meta:
        fields = '__all__'
        model = References

    def __init__(self, *arg, **kwarg):
        super(ReferencesForm, self).__init__(*arg, **kwarg)
        self.empty_permitted = True
    def clean(self):
        """ Custom validation for fields
        """
        cleaned_data = super(ReferencesForm, self).clean()

        return self.cleaned_data  
并在“我的视图”文件中建立它,如下所示:

ReferencesInlineFormSet = inlineformset_factory(
        Applicant, References, form=ReferencesForm, extra=1, can_delete=False)
...
if request.method == 'POST':
    references_formset = ReferencesInlineFormSet(
        request.POST, instance=applicant)

    if (references_formset.is_valid()):
        references_formset.instance['address'] = "test";
        references_formset.save();
我不认为申请者模型在这里很重要,但如果有必要,我可以在以后添加它

我想将一些地址字段(addr1、addr2、town等)合并到一个名为“address”的数据库字段中,并考虑在视图文件中这样做

我在这里尝试了一个简单的带有“test”的作业,但收到了错误:

'Applicant' object does not support item assignment
references_formset.instance['address'] = "test"; 

您可以通过模型的实例访问表单的字段。例如,代替这一行:

references_formset.instance['address'] = "test";
applicant.address = "test"
试试这句话:

references_formset.instance['address'] = "test";
applicant.address = "test"

您可以使用以下内容:

if form.is_valid():
    obj = form.save(commit=False)
    obj.address = "test"
    obj.save()
简单:

但是要小心,这不会检查
是否有效()。如果要执行此操作,可以使用新值实例化表单:

# NOT TESTED, NOT SURE IF THIS WORKS...
form = MyForm(instance=instance)
if form.is_valid():
    form.save()