В формах Django я не могу использовать валидаторы regex
Добрый день. Я хочу использовать валидатор regex для поля full_name в Django 1.11.10. Но когда я запускаю приведенный ниже код, он не работает. Как я могу это исправить?
forms.py
class CustomerForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CustomerForm, self).__init__(*args, **kwargs)
self.fields['orderorbarcode'].widget.attrs['readonly'] = True
self.fields['orderorbarcode'].label = "Order ID or Item Barcode"
self.fields['full_name'].label = "Full Name"
self.fields['phone_number'].label = "Phone Number"
self.fields['full_name'].widget = forms.TextInput(attrs={'placeholder': '*required'})
self.fields['email'].widget = forms.TextInput(attrs={'placeholder': '*required'})
self.fields['phone_number'].widget = forms.TextInput(attrs={'placeholder': '*required'})
class Meta:
model = Customer
fields = (
'orderorbarcode','full_name','company','email',
'phone_number','note')
AlphanumericValidator = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')
full_name = forms.CharField(max_length=50, validators=[AlphanumericValidator])
Вы можете просто использовать валидатор в моделях вместо форм (если full_name является полем модели):
from django.core.validators import RegexValidator
validate_alphanumeric = RegexValidator(r'^[a-zA-Z0-9]*$', 'Only alphanumeric characters are allowed.')
class MyModel(models.Model):
full_name = models.CharField(max_length=50, validators=[validate_alphanumeric])
ИЛИ в вашей модели:
class CustomerForm(forms.ModelForm):
# form field moved to the top (instead of being after Meta class)
AlphanumericValidator = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')
full_name = forms.CharField(max_length=50, validators=[AlphanumericValidator])
def __init__(self, *args, **kwargs):
# code
class Meta:
model = Customer
fields = (
'orderorbarcode','full_name','company','email',
'phone_number','note')