Индивидуальная проверка «Employee_Name» в моем классе EmployeeForm не работает

Я сделал форму для создания сведений о сотруднике. В Forms.py я создал класс EmployeeForm, а также добавил настраиваемую проверку для проверки «Employee_Name», но настраиваемая проверка «EmployeeNameValidate» не работает.

формы.py

class EmployeeForm (forms.ModelForm):
    Employee_Name = forms.CharField(widget=forms.TextInput(attrs{
                              "placeholder" : "Enter the Employee Name "
                                }
                                 ))
    Employee_ID   = forms.CharField(initial = '17CS')
    Address       = forms.CharField(
            required = False , 
            widget = forms.Textarea
                                  (
            attrs = {
                 "placeholder": "Enter your Address here ",
                 "class" : "new-class-name two",
                 "id" :"my-id-for-textarea",
                 "rows":10,
                 "cols":100
                }
                ) 
                                   )
    Salary  = forms.DecimalField(initial = 60000.24)

    class Meta:
        model  = Employee
        fields = [
        'Employee_Name',
        'Employee_ID',
        'Address',
        'Salary'
        ]

    #print("yaaah !!")

    def EmployeeNameValidate(self, *args , **kwargs):
        print("yaaah 22222 !!")
        Employee_Name = self.cleaned_data.get("Employee_Name")
        print(Employee_Name)
        if "abc" not in Employee_Name:
            raise forms.ValidationError ("This is not a valid Employee Name 
                                        ")
        return Employee_Name 

     #print("yaaah 3333333333!!")

просмотры.py

def emp_create_view(request):
    form = EmployeeForm(request.POST or None )
    if form.is_valid():
        form.save()
        form = EmployeeForm()
    context = {
    'form': form
    }

    return render(request,"employee/emp_create.html",context)

emp_create.html

{% extends "base.html" %}
{% block content %}
<h1>
 Enter the details of the Employee :
</h1>
<form method = 'POST'> {% csrf_token %}
{{ form.as_p }}
<input type='submit' value='Save' />
</form>
{% endblock %}

Это буквально третий вопрос за последние несколько дней о проверке формы, в котором метод clean был назван неправильно. Что происходит?

Daniel Roseman 19.02.2019 11:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
80
2

Ответы 2

ваш метод проверки должен называться clean_Employee_Name, так как имя вашего поля — Employee_Name

попробуй это

class EmployeeForm (forms.ModelForm):
    Employee_Name = forms.CharField(widget=forms.TextInput(attrs{
                              "placeholder" : "Enter the Employee Name "
                                }
                                 ))
    Employee_ID   = forms.CharField(initial = '17CS')
    Address       = forms.CharField(
            required = False , 
            widget = forms.Textarea
                                  (
            attrs = {
                 "placeholder": "Enter your Address here ",
                 "class" : "new-class-name two",
                 "id" :"my-id-for-textarea",
                 "rows":10,
                 "cols":100
                }
                ) 
                                   )
    Salary  = forms.DecimalField(initial = 60000.24)

    class Meta:
        model  = Employee
        fields = [
        'Employee_Name',
        'Employee_ID',
        'Address',
        'Salary'
        ]

    #print("yaaah !!")

    def clean_Employee_Name(self, *args , **kwargs):
        print("yaaah 22222 !!")
        Employee_Name = self.cleaned_data.get("Employee_Name")
        print(Employee_Name)
        if "abc" not in Employee_Name:
            raise forms.ValidationError ("This is not a valid Employee Name 
                                        ")
        return Employee_Name 

     #print("yaaah 3333333333!!")

надеюсь, это поможет

Для проверки одного поля форма django должна иметь функцию в формате clean_<field_name>. В вашем случае это clean_Employee_Name.

Переименуйте функцию, и проверка произойдет

Другие вопросы по теме