Django表单 - 附加到类元排除和小部件

时间:2011-08-31 01:34:02

标签: django django-forms

是否可以附加到继承表单的exclude或widgets变量?

到目前为止我有以下设置。

class AddPropertyForm(forms.ModelForm):
    num_months = forms.ChoiceField(choices=MONTHS)
    request_featured = forms.BooleanField(required=False)
    featured_months = forms.ChoiceField(choices=MONTHS)

    class Meta():
        model = RentalProperty
        exclude = ('listing_id', 'active_listing', 'active_listing_expiry_date', 'featured_property', 'featured_expiry_date', 'slug', 'property_manager')
        widgets = {
            'property_type': forms.Select(attrs={'onchange':'propertyType()'}),
        }

class EditPropertyForm(AddPropertyForm):
    request_reactivation = forms.BooleanField(required=False)
    class Meta(AddPropertyForm.Meta):
        exclude = ('address1', 'property_type')
        widgets = {
            'request_reactivation': forms.CheckboxInput(attrs {'onchange':'reactivateProperty()'}),
        }

我正在尝试将EditPropertyForm的最终结果看作如下的exclude和widgets语句。

exclude = ('address1', 'property_type', 'listing_id', 'active_listing', 'active_listing_expiry_date', 'featured_property', 'featured_expiry_date', 'slug', 'property_manager')

widgets = {
    'request_reactivation': forms.CheckboxInput(attrs {'onchange':'reactivateProperty()'}),
    'property_type': forms.Select(attrs={'onchange':'propertyType()'}),
}

如果有更好的方法,请建议。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

如何从父类中获取属性并更新它们?

像这样(未经测试):

class Meta(AddPropertyForm.Meta):
    exclude = tuple(list(AddPropertyForm.Meta.exclude) + ['address1', 'property_type'])
    widgets = AddPropertyForm.Meta.widgets.copy()
    widgets.update({
        'request_reactivation': forms.CheckboxInput(attrs {'onchange':'reactivateProperty()'}),
    })

它不漂亮,但应该得到你想要的东西。