Проверка уникальности в форме django (ADD и EDIT) - PullRequest
0 голосов
/ 23 января 2020

Здесь я хотел добиться проверки уникальности номера мобильного телефона в обоих условиях, т.е. во время подробностей формы ADD и EDIT.

Я столкнулся с проблемой в режиме редактирования формы, потому что не могу выполнить проверку уникальности в форме редактирования отправить.

Я хотел, чтобы только один мобильный телефон не был сохранен в базе данных. Пока я редактирую форму, она обходит мою логику c и позволяет дублировать записи из EDIT.

Не могли бы вы, ребята, предложить какое-либо решение для проверки уникальности?

forms.py

class StudentForm(forms.Form):
    name = forms.CharField(required=True,max_length=10)
    city = forms.CharField(required=True,max_length=10)
    mobile_no = forms.CharField(required=True, max_length=10)

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(StudentForm, self).__init__(*args, **kwargs)  

    def clean_mobile_no(self):
        mobile_no = self.cleaned_data.get('mobile_no')
        id = self.request.POST.get('id')

        if stu_id:
            if Student.objects.filter(mobile_no=mobile_no).count()>1:
                raise forms.ValidationError("You have already added mobile no.")
            else:
                return mobile_no
        elif mobile_no and Student.objects.filter(mobile_no=mobile_no).exists():
            raise forms.ValidationError("Alreadsy exists.")
        return mobile_no

views.py

def add_edit_(request, stu_id=None):
    if stu_id:
        stu = Student.objects.get(pk=stu_id)
    if request.method == 'POST':
        form = StudentForm(request.POST, request=request)
        if form.is_valid():
            name = request.POST['name ']
            city = request.POST['ccity']
            mobile_no = form.cleaned_data['mobile_no']

                if stu_id:
                stu.name=name
                stu.ccity=city
                stu.mobile_no=mobile_no
                cstu.save()
                messages.success(request, 'Edit Successfully...')
                return redirect('/.../')
            else:
                p = Student(name=name, city=city, mobile_no=smobile_no
                            )
                p.save()
                messages.success(request, 'Information added Successfully...')
                return redirect('/../')
    elif id:
        form = CStudentForm(initial={'name':stu.name, 
               'city':stu.city,'mobile_no':std.mobile_no '})
    else:
        form = StudentForm()

    context = {

        'form': form,
        'stu_id':stu_id,
    }

    return render(request, 'student.html', context=context)

Заранее спасибо .

...