meta类用于动态构造表单定义-因此,在创建ModelForm实例时,不包含在不包含中的字段已经作为新对象的属性添加。
通常的方法是为每个可能的排除列表仅具有多个类定义。但是,如果您希望表单本身是动态的,则必须动态创建一个类定义。就像是:
def get_form(exclude_list): class MyForm(ModelForm): class meta: model = Passenger exclude = exclude_list return MyFormform_class = get_form(('field1', 'field2'))form = form_class()更新 :我只是重新回顾了这篇文章,并认为我会发布一种更惯用的方式来处理动态类:
def PassengerForm(exclude_list, *args, **kwargs): class MyPassengerForm(ModelForm): class meta: model = Passenger exclude = exclude_list def __init__(self): super(MyPassengerForm, self).__init__(*args, **kwargs) return MyPassengerForm()form = PassengerForm(('field1', 'field2'))


