如何在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'})
答案 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)