Здесь я хотел добиться проверки уникальности номера мобильного телефона в обоих условиях, т.е. во время подробностей формы 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)
Заранее спасибо .