Как проверить, обновляется ли информация профиля вошедшего пользователя в моделях django

Я работаю над проектом на Django, где у меня есть модель профиля с полем Foreign Key (связь OneToOne с моделью пользователя) под названием applicant и полем status, которое по умолчанию установлено на 'Update'. Другие поля, такие как фамилия и другие имена, также включены в модель профиля.

class Profile(models.Model):
applicant = models.OneToOneField(User, on_delete=models.CASCADE, null = True)
surname = models.CharField(max_length=10, null=True)
othernames = models.CharField(max_length=30, null=True)
status = models.CharField(max_length=30, default='Update', null=True)

def save(self, *args, **kwargs):
    self.profilestatus = 'Updated'
    super().save(*args, **kwargs)

def __str__(self):
    return f'{self.applicant.username}-Profile'

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

def index(request):

user = request.user.is_authenticated

if request.user.is_authenticated and Profile.objects.get(applicant=user, status= 'Update'):
    
    
    
    return redirect('user-profile-update')
else:
    return redirect('user-profile')

context = {
    'check_profile_update':check_profile_update,
}
return render(request, 'dashboard/index.html', context)

У меня есть ModelForm с методом сохранения, который автоматически обновляет поле satus в Profile Model на Updated каждый раз, когда пользователь обновляет информацию о своем профиле.

Проблема в том, что каждый раз, когда я запускаю приложение, появляется ошибка "Профиль, соответствующий запросу, не существует".

Кто-нибудь, пожалуйста, помогите мне с наилучшим способом решения этой проблемы. Спасибо

Проблема:
. user = request.user.is_authenticated делает переменную user = True, поэтому, когда вы используете ее в
. if request.user.is_authenticated and Profile.objects.get(applicant=user, status= 'Update'):,
вы на самом деле делаете следующее:
if request.user.is_authenticated and Profile.objects.get(applicant=True, status= 'Update'):
Конечно, совпадений не будет, так как ни один кандидат не равен True.

Решение
Измените эти две строки на:

user = request.user    # Now user equals the actual user
if user.is_authenticated and Profile.objects.get(applicant=user, status= 'Update'):

Другое замечание:
Я не решаюсь использовать get запрос, не поместив его в try/except оператор, чтобы вы могли обработать то, что должно произойти, если Profile будет not найден:

user = request.user    # Now user equals the actual user
if user.is_authenticated:
    try:
        profile = Profile.objects.get(applicant=user, status= 'Update')
    except Profile.DoesNotExist:
        # Code to handle what happens if a Profile is NOT found
        # Maybe redirect to a page to create an applicant?      
Вернуться на верх