gpt4 book ai didi

ModelForm 的 Django TextField max_length 验证

转载 作者:行者123 更新时间:2023-11-28 19:36:58 26 4
gpt4 key购买 nike

Django 在验证 ModelForm 时不考虑 TextField 模型字段的 max_length 属性。

所以我定义了一个继承自 models.TextField 的 LimitedTextField,并添加了类似于 models.CharField 的验证位:

from django.core import validators

class LimitedTextField(models.TextField):
def __init__(self, *args, **kwargs):
super(LimitedTextField, self).__init__(*args, **kwargs)
self.max_length = kwargs.get('max_length')
if self.max_length:
self.validators.append(validators.MaxLengthValidator(self.max_length))

def formfield(self, **kwargs):
defaults = {'max_length': self.max_length}
defaults.update(kwargs)
return super(LimitedTextField, self).formfield(**defaults)

但这仍然对 ModelForm 验证没有影响。

我错过了什么?

最佳答案

从 Django 1.2 开始,这可以由模型级别的验证器完成,如下所述: https://docs.djangoproject.com/en/stable/ref/validators/

from django.core.validators import MaxLengthValidator

class Comment(models.Model):
comment = models.TextField(validators=[MaxLengthValidator(200)])

从 Django 1.7 开始,您可以使用仅在客户端强制执行的 max_lengthSee here

关于ModelForm 的 Django TextField max_length 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com