Django форма get_or_created с 3 различными переменными - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь создать или обновить 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).

есть идеи, как я могу решить эту проблему? Спасибо

...