Django - Булево поле возвращает false в шаблоне и true в базе данных

Да, проблема у меня такая, как написано в заголовке. В базе данных поле boolean может быть установлено как true, но в шаблоне html оно отображается как false.

models.py

class TrainingGoal(models.Model):

    forgeid = models.ForeignKey(ForgeUser, on_delete=models.CASCADE, default=None)
    strength = models.BooleanField(default=False)
    cardio = models.BooleanField(default=False)
    yoga = models.BooleanField(default=False)

    def __str__(self):
        return self.forgeid.forgepass

views.py

def profileView(request):
    if not ForgeUser.objects.filter(forgeid=request.user).exists():
        return redirect('profileapp:create')

    forge_user_query = ForgeUser.objects.get(forgeid=request.user)
    training_goal_query = TrainingGoal.objects.filter(forgeid=forge_user_query)


    return render(request, 'profileapp/profile.html', {'forge_profile': forge_user_query, 'training_goals': training_goal_query})

abridged profile.html

    {% if training_goals %}
      <div class="goal-container">
        <span class={{training_goals.strength | yesno:"training-true,training-false"}}>STRENGTH</span>
        <span class={{training_goals.cardio | yesno:"training-true,training-false"}}>CARDIO</span>
        <span class={{training_goals.yoga | yesno:"training-true,training-false"}}>YOGA</span>
      </div>
    {% endif %}

Значение класса тега span всегда отображается как training-false, и даже расширение его в оператор if показывает, что возвращаемое значение равно false. Не уверен, что я здесь упускаю.

Проблема в том, что в наборе запросов вы используете фильтр, который возвращает более одного объекта. Поэтому вы не можете получить доступ к значениям, используя .<field_name>

training_goal_query = TrainingGoal.objects.filter(forgeid=forge_user_query)

Добавьте цикл for и он будет работать нормально

{% if training_goals %}
{% for goals in training_goals %}
<div class="goal-container">
  <span class={{goals.strength | yesno:"training-true,training-false"}}>STRENGTH</span>
  <span class={{goals.cardio | yesno:"training-true,training-false"}}>CARDIO</span>
  <span class={{goals.yoga | yesno:"training-true,training-false"}}>YOGA</span>
</div>
{% endfor %}
{% endif %}
Вернуться на верх