【问题标题】:Django: model maxlength and form maxlengthDjango:模型 maxlength 并形成 maxlength
【发布时间】:2011-08-20 19:08:01
【问题描述】:

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

假设我定义了一个带有字段的模型:name = models.CharField(max_length=30)
现在我定义了一个具有相同字段的 Form 对象:name = forms.CharField(max_length=30)

问题是,有没有办法使两者同步?如果我先定义一个模型,我可以根据我对模型类所做的定义来定义表单类的max_length吗?

【问题讨论】:

    标签: django forms model


    【解决方案1】:

    如果您有一个与模型直接相关的表单,则使用 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-07
        相关资源
        最近更新 更多