Я пытаюсь создать или обновить django форму. В этой форме есть 3 уникальных идентификатора: NRI C, MRN или Passport. Пользователь может заполнить любой или все из них.
проблема в том, как мне проверить с базой данных, нужно ли мне создавать или обновлять существующую.
, поэтому мой код выглядит так:
if request.method == 'POST':
form = PatientForm(request.POST)
if form.is_valid():
nric = form.cleaned_data['nric']
mrn = form.cleaned_data['mrn']
passport = form.cleaned_data['passport']
try:
if nric: #if user filled in nric, check database by nric
patient = Patient.objects.get(nric=nric)
patient.nric = nric
if mrn:
patient = Patient.objects.get(mrn=mrn)
patient.mrn=mrn
if passport:
patient = Patient.objects.get(passport=passport)
patient.passport = passport
patient.name = form.cleaned_data['name']
patient.save()
except Patient.DoesNotExist():
form.save()
Проблема начинается, когда пользователь заполнил еще один из этих трех уникальных идентификаторов, например: там уже есть запись с паспортом = 34234234, затем пользователь заполнил еще один номер MRN с новым значением ... поэтому 2 из 3 полей теперь имеют значения, он не пройдет проверку из-за object.get (mrn = mrn).
есть идеи, как я могу решить эту проблему? Спасибо