擅长:python、mysql、java
<p>Meta类用于动态构造表单定义,因此在创建ModelForm实例时,不在exclude中的字段已经作为新对象的属性添加。</p>
<p>通常的方法是为每个可能的排除列表都有多个类定义。但如果希望窗体本身是动态的,则必须动态创建类定义。类似于:</p>
<pre><code>def get_form(exclude_list):
class MyForm(ModelForm):
class Meta:
model = Passenger
exclude = exclude_list
return MyForm
form_class = get_form(('field1', 'field2'))
form = form_class()
</code></pre>
<p><strong>更新</strong>:我刚刚回顾了这篇文章,并认为我会发布一个更习惯的方法来处理动态类:</p>
<pre><code>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'))
</code></pre>