多线Charfield Django

时间:2018-03-04 20:07:48

标签: python django

如何在Django中以模型形式创建多行CharField?我不想使用Textarea,因为我希望输入的长度有限。问题是关于字段'描述' 这是我的模特:

class Resource(models.Model):
    type = models.CharField(max_length=50)
    name = models.CharField(max_length=150)
    description = models.CharField(max_length=250, blank=True)
    creationDate = models.DateTimeField(default=datetime.now, blank=True)

这是我的表格:

class AddNewResourceForm(forms.ModelForm):
    class Meta:
        model = Resource       
        fields = ("name","type","description")

    def __init__(self, *args, **kwargs):
        super(AddNewResourceForm, self).__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({'class' : 'new-res-name', 
            'placeholder' : 'max 150 characters'})
        self.fields['type'].widget.attrs.update({'class' : 'new-res-type', 
            'placeholder' : 'max 50 characters'})
        self.fields['description'].widget.attrs.update({'class' : 'new-res-
            description', 'placeholder' : 'max 250 characters'})

1 个答案:

答案 0 :(得分:2)

我认为你应该使用TextField,确保强制执行所需的限制,这可以通过两个步骤完成:

1)在max_length字段上设置description属性,以确保限制在客户端反映出来。

来自docs

  

如果指定max_length属性,它将反映在   自动生成的表单字段的Textarea小部件。但事实并非如此   在模型或数据库级别强制执行。

2)将MaxLengthValidator应用于您的字段,以确保您也有服务器端限制验证,例如

from django.core.validators import MaxLengthValidator


class Resource(models.Model):
    type = models.CharField(max_length=50)
    name = models.CharField(max_length=150)
    description = models.TextField(max_length=250, blank=True,
                                   validators=[MaxLengthValidator(250)])
    creationDate = models.DateTimeField(default=datetime.now, blank=True)