Настроенная проверка 'Employee_Name' в моем классе EmployeeForm не работает - PullRequest
0 голосов
/ 19 февраля 2019

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

forms.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!!")

views.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 %}

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

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

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

0 голосов
/ 19 февраля 2019

Ваш метод проверки должен иметь имя 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!!")

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

...