Django:模型maxlength和form maxlength

时间:2011-05-07 15:42:16

标签: django forms model

我需要以某种方式将Model的max_length约束挂钩到Form对象中。

假设我使用字段定义模型:name = models.CharField(max_length=30)
现在我使用相同的字段定义Form对象:name = forms.CharField(max_length=30)

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用ModelForms: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform 这样,表单直接从模型继承,您不必重复自己。