문제

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 유효성 검사에 영향을 미치지 않습니다.

누락 된 것입니까?어떤 도움도 감사합니다.

감사합니다

omat

다른 팁

텍스트 필드에 대한 최대 길이를 다음과 같이 TextArea 위젯으로 정의하여 텍스트 필드를 정의 할 수 있습니다.

class MyClass(models.Model):
    textfield = models.TextField()

class MyForm(forms.ModelForm):
    textfield = forms.CharField(
        max_length = 50,
        widget = forms.Textarea
    )

    class Meta:
        model = MyClass
        fields = ('textfield',)
.

Django 2.x의 유효성 검사기에서 maxLengthValidator를 가져올 필요가 없습니다

from django.db import models
class Comment(models.Model):
  comment = models.TextField(max_length=200)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top