Добавление ограничений проверки modelForm в Django для класса Meta - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно добавить некоторые ограничения проверки на мой CustomUserCreationForm Meta class.

Я не могу найти, где и как это добавить. Следует ли мне использовать RegexValidator для этой цели?

Например, я бы хотел, чтобы first_name было минимальной длиной 2 и максимальной длиной 30 только букв.


from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.forms import ModelForm

from .models import *

import datetime


class CustomUserCreationForm(UserCreationForm):
    birth_date = forms.DateField(
        label='birthdate', 
        widget=forms.DateInput(
            attrs={'placeholder':'jj/mm/aaaa'}
        )
    )
    introduction = forms.CharField(
        label='introduction', 
        min_length=20, 
        max_length=500,
        widget = forms.Textarea(
            attrs={
                'placeholder': 'Hey, I\'m Wely.',
                'cols':"40", 
                'rows':"5"
            }
        )
    )
    address1 = forms.CharField(
        label='Address (1st line)', 
        min_length=2, 
        max_length=40,
        widget = forms.TextInput(
            attrs={'placeholder': '1st av. Lincoln'}
            )
        )
    address2 = forms.CharField(
        required=False, 
        label='Address (2nd line)', 
        min_length=0, 
        max_length=40,
        widget = forms.TextInput(
            attrs={'placeholder': 'Apt 3'}
        )
    )
    registration_video = forms.CharField(
        label='video',
        widget = forms.FileInput(
            attrs={'style': 'display:none'}
        )
    )


    class Meta:
        model = CustomUser
        fields = ('first_name', 'last_name', 'email')
        labels = {
            'first_name': 'First name',
            'last_name': 'Last Name',
            'email': 'E-mail address'
        }
        widgets = {
            'first_name': forms.TextInput(attrs = {'placeholder': 'Alicia'}),
            'last_name': forms.TextInput(attrs = {'placeholder': 'Rodriguez'}),
            'email': forms.EmailInput(attrs = {'placeholder': 'alicia@mail.com'}),
        }


1 Ответ

0 голосов
/ 15 августа 2020

Не использовать RegexValidator. Только так меняйся. Здесь мы добавляем minlength и maxlength внутри attr для поля first_name.

class Meta:
        model = CustomUser
        fields = ('first_name', 'last_name', 'email')
        labels = {
            'first_name': 'First name',
            'last_name': 'Last Name',
            'email': 'E-mail address'
        }
        widgets = {
            'first_name': forms.TextInput(attrs = {'placeholder': 'Alicia','minlength':2,'maxlength':30}),
            'last_name': forms.TextInput(attrs = {'placeholder': 'Rodriguez'}),
            'email': forms.EmailInput(attrs = {'placeholder': 'alicia@mail.com'}),
        }
...