Использование валидатора regex в django modelforms
я хочу использовать regex валидатор для поля name в форме модели
я хочу, чтобы пользователи могли вводить в это поле только английский язык, а если они хотят ввести другой язык, то получат ошибку спасибо
помогите мне как это сделать спасибо
Официального способа определения языка в валидаторе django не существует. Однако вы можете использовать spacy-langdetect
и включить его в функцию clean
формы. Например:
from spacy_langdetect import LanguageDetector
import spacy
from django.core.exceptions import ValidationError
class AddPostModelForm(forms.ModelForm):
[... definitions ...]
def clean_name(self):
name = self.cleaned_data['name']
nlp = spacy.load('en') # 1
nlp.add_pipe(LanguageDetector(), name='language_detector', last=True) #2
doc = nlp(name ) #3
detect_language = doc._.language #4
if detect_language['language'] != 'en':
raise ValidationError("Only use english language")
return name
Данная проверка ошибок основана на вероятностном прогнозе, поэтому может быть не на 100% точной, особенно в случаях с небольшим объемом текста или языком, который не очень похож на английский (греческий, латинский).
Я бы посоветовал хранить их на существующем языке и переводить после при повторном рендеринге.