2012-07-18 56 views
0

在我的django项目中,我有2个相关模型“Vehicle”(父模型)和ParamConf(子模型)。 ParamConf有字段“程序”,我想修复一些错误的值。
(admin.py):如何更改django管理员中的内嵌表单?

class ParamConfFormSet(BaseInlineFormSet): 
    def clean(self): 
     super(ParamConfFormSet, self).clean() 

     for form in self.forms: 
      if hasattr(form, 'cleaned_data') and 'program' in form.cleaned_data: 

       program = form.cleaned_data['program'].lower() # <<< I want to save this changed value 
       form.cleaned_data['program'] = program # <<< but this doesn't work :^(

class ParamConfInline(admin.TabularInline): 
    model = models.ParamConf 
    formset = ParamConfFormSet 


class VehicleAdminForm(forms.ModelForm): 
    class Meta: 
     model = models.Vehicle 

class VehicleAdmin(admin.ModelAdmin): 
    inlines = [ ParamConfInline, ] 
    form = VehicleAdminForm 

我甚至写了节省ParamConf()方法,但Django不希望保存车辆的形式(车辆的保存方法是好的)之后调用它。

回答

0

如果字段值实际发生更改(并且我试图保存没有编辑字段的表单),Django会为内联参数发出保存信号。对不起,这是我的错。

0

我知道这个问题已经很老了,但别人可能还在寻找答案...保存,即使它没有改变一个内联:

Class EntityInline(admin.TabularInline): 
    extra = 0 
    model = Entity 
    form = AlwaysChangedModelForm