Django:如何设置models.TextField()的最小长度?

Hou*_*man 12 forms django

有似乎是一个max_lengthCharField只.但是min_length对于a来说TextField(),有没有办法强制执行100个字符TextField

Nge*_*tor 17

具体来说,您将使用自定义验证器MinLengthValidator


小智 10

在这种情况下,您需要MinLengthValidator从 导入资源django.core.validators,如下所示:

from django.core.validators import MinLengthValidator

要使用该资源,模型必须编写如下:

variable = models.TextField(
        validators=[
            MinLengthValidator(50, 'the field must contain at least 50 characters')
            ]
        )
Run Code Online (Sandbox Code Playgroud)


Ase*_*eem 5

声明 Django 表单时

cell_phone=forms.CharField(max_length=10,min_length=10);
Run Code Online (Sandbox Code Playgroud)

在 Django 模板中渲染表单字段时

{% render_field form1.cell_phone  minlength="10" maxlength="10" %}
Run Code Online (Sandbox Code Playgroud)

下划线令人困惑


小智 5

对于models.Models现场验证:

from django.db.models import TextField
from django.db.models.functions import Length

TextField.register_lookup(Length, 'length')

class Foo(models.Mode):
    text_field_name = models.TextField()
    
    class Meta:
        constraints = [
            models.CheckConstraint(
                check=Q(text_field_name__length__gte=10),
                name="text_field_name_min_length",
            )
        ]
Run Code Online (Sandbox Code Playgroud)

使用约束将在数据库级别创建验证(我认为),这将在save() 这也适用于CharField.