我需要以某种方式将Model的max_length约束挂钩到Form对象中。
假设我使用字段定义模型:name = models.CharField(max_length=30)
现在我使用相同的字段定义Form对象:name = forms.CharField(max_length=30)
问题是,有什么方法可以同步两者吗?如果我首先定义一个模型,我可以根据我对Model类的定义来定义Form类的max_length
吗?
答案 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)
答案 1 :(得分:1)
使用ModelForms: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform 这样,表单直接从模型继承,您不必重复自己。