Как получить булево значение из моделей для определенного пользователя в Django?
У меня есть расширенная модель пользователя, и я хочу проверить, есть ли у вошедшего пользователя completed_application
в соответствии с моделью:
Models.py:
class Completed(models.Model):
class Meta:
verbose_name_plural = 'Completed Application'
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
completed_application = models.BooleanField(default=False)
def __str__(self):
return f'{self.completed_application}'
Views.py:
@login_required
def dashboard(request):
if Completed.objects.get(completed_application = True):
completed = True
else:
completed = False
return render(request, 'dashboard.html', {'section': 'dashboard', 'completed' : completed})
HTML:
{% if completed %}
<!-- You already completed an application! -->
<h1> Already completed </h1>
{% else %}
<!-- Show the application form -->
<h1> Render model form here </h1>
{% endif %}
Приведенный выше код не работает для меня, так как он возвращает True каждый раз. Я прочитал довольно много сообщений здесь, но они, похоже, не ориентированы на конкретного пользователя, например: Как показать данные из моделей django, чье поле boolean равно true?
Здравствуйте, проблема в том, что вам нужно изменить свой набор запросов
Completed.objects.get(completed_application ...etc
To:
Completed.objects.filter(completed_application=True,user=request.user).exists()