Django表单,更改默认max_length

时间:2016-01-14 17:47:46

标签: python django django-forms

在模型"Example"中,我有两个字段:

-"description" (varchar, length 64).
-"description_length" integer.

description_length对每条记录都有不同的值,它总是在1到64之间。

在Django表单中,如何将maxlength描述设置为等于description_length变量值?

1 个答案:

答案 0 :(得分:2)

当然可以。

class ExampleForm(forms.ModelForm):
    class Meta:
        model = Example

    def __init__(self, *args, **kwargs):
        super(ExampleForm, self).__init__(*args, **kwargs)  
        if self.instance:
            self.fields['description'].max_length = self.instance.description_length

请确保您的description模型字段足以容纳description_length的文字:

class Example(models.Model):
    MAX_DESCRIPTION_LENGTH = 1024

    description = models.CharField(max_length=MAX_DESCRIPTION_LENGTH)
    description_length = models.IntegerField(
        validators=MaxValueValidator(MAX_DESCRIPTION_LENGTH))