Попытка понимания, кроме python/django

Мне нужна ваша помощь в понимании try-except python/Django.

поэтому у меня есть такая функция:

def submit_dept_head_application(request, application_id):
cv = request.FILES['cv']
letter = request.FILES['letter']
candidate_id = request.data['candidateId']
rank_id = request.data['requestedRankId']
application_state = {
    'candidate_id': candidate_id,
    'rank_id': rank_id,
    'cv_filename': cv.name,
    'letter_filename': letter.name,
}

creator = Profile.objects.get(user=request.user.id)
department = creator.department
applicant = Profile.objects.get(user=candidate_id)
applicant_profile_id = applicant.id
rank = Rank.objects.get(id=rank_id)

try:
    application = Application.objects.get(id=application_id)
    # TODO - update application
except Application.DoesNotExist:
    application = None

if application is None:
    application = Application(creator=creator, applicant=applicant, desired_rank=rank,
                              application_state=application_state, department=department
                              )
    application.save()
    create_application_directory(application.id)

ApplicationStep.objects.update_or_create(
    application=application, step_name=Step.STEP_1,
    defaults={'can_update': True, 'can_cancel': True, 'currentStep': True}
)

copy_to_application_directory(cv, application.id)
copy_to_application_directory(letter, application.id)

send_email(settings.SENDGRID_SENDER, ['xxxxxx@gmail.com'], 'new application submitted',
           'new application submitted')

return Response(application.id, status=status.HTTP_200_OK)

Прямо сейчас происходит так: если нет открытой заявки, я создаю новую. Я пытаюсь добавить еще одну проверку, которая будет Application.objects.filter(applicant=applicant_profile_id), так что если у меня есть открытая заявка для этого кандидата, то она не попадет в application.save(), а отправит ошибку. Я не знаю, как это сделать, и здесь мне нужна ваша помощь, пожалуйста :)

Сначала проверьте. Для этого и нужен queryset.exists().

if Application.objects.filter(applicant=applicant_profile_id).exists() :
    # tell applicant he's being naughty

#carry on as in the code you posted
Вернуться на верх