2017-09-05 5 views
0

J'ai un TextField Je voudrais ajouter un min_length à. Selon les docs Django, il existe des validateurs intégrés que vous pouvez utiliser pour appliquer cette fonction (https://docs.djangoproject.com/en/1.11/ref/validators/#minlengthvalidator).Validateurs personnalisés sur les champs Wagtail

J'ai essayé d'ajouter à mon modèle avec ce code:

class MyPage(Page): 
    ... 
    introduction = models.TextField(
     null=True, 
     blank=False, 
     validators=[MinLengthValidator(240, message="Must be at least 240 chars.")] 

Lors de la publication cette page avec une valeur inférieure à 240, cependant, je n'ai pas l'erreur de validation prévu, mais a frappé un TypeError : unorderable types: str() < int().

Y a-t-il un moyen d'avoir un min_length sur un TextField?

+0

que diriez-vous 'validateurs = MinLengthValidator (240)' '_sans un message'_? –

+0

J'ai reçu la même erreur. – inostia

+0

avec le paramètre: 'min_length = 240' –

Répondre

0

Si par défaut est MinLengthValidator fonctionne pas pour vous, je vous suggère de caisse un validateur personnalisé comme ci-dessous:

from django.core.validators import ValidationError 

def max_length_validator(value): 
    if len(value) < 240: 
     raise ValidationError("Must be at least 240 chars.") 


class MyPage(Page): 
    introduction = models.TextField(
     blank=False, validators=[max_length_validator]) 
+0

J'utilisais le mauvais validateur 'MinValueValidator'. 'MinLengthValidator' a bien fonctionné. Merci de votre aide – inostia