2011-05-07 84 views
3

我需要以某种方式将模型的max_length限制挂钩到Form对象中。Django:model maxlength和form maxlength

说我定义模型与现场:name = models.CharField(max_length=30)
现在我定义了一个窗体对象具有相同的字段:name = forms.CharField(max_length=30)

问题是,是否有什么方法两个同步?如果我首先定义一个模型,我可以根据我对Model类所做的事情来定义Form类的max_length吗?

回答

6

如果您有与表格直接相关的模型,那么使用ModelForm是有意义的。

另一种方法是拿起从模型中的MAX_LENGTH属性是使用模型的_meta属性,像这样:

>>> SomeModel._meta.get_field('some_field').max_length 
64 
>>> 

这样:

from models import * 

class MyForm(forms.Form): 
    some_field = forms.CharField(label='Some Field', 
      max_length=SomeModel._meta.get_field('some_field').max_length) 

CharField docs

+0

真棒,谢谢! – reedvoid 2011-05-09 05:14:22