Django метод модели возвращает правильный ответ при вызове из оболочки, но не при вызове из шаблона - PullRequest
0 голосов
/ 03 апреля 2020

models.py

class player(models.Model):
    name = models.CharField(max_length = 100)
    rounds_played = models.IntegerField()
    rounds_missed = models.IntegerField()
    date_joined = models.DateTimeField(default = timezone.now)
    total_points = models.IntegerField()
    bio = models.TextField()
    user_ID = models.CharField(max_length = 10)
    user_m = models.ForeignKey(User, on_delete=models.CASCADE)
    is_active = models.BooleanField(),
    def rounds_record(self):
        return int(100 * self.rounds_played / (self.rounds_played + self.rounds_missed))
    def player_status(self):
        if self.is_active:
            return "Yes"
        return "No"
    def average_points(self):
        return int(self.total_points / self.rounds_played)
    def __str__(self):
        return self.name

фрагмент шаблона

{% for player in players %}
<div class = "grid-item">
        {{player.player_status}}
</div>
{% endfor %}

Я занимаюсь разработкой веб-приложения для базы данных (для изучения django), в котором игроки в команде и их статистика отслеживаются и хранятся в базе данных psql. При вызове метода player_status из оболочки manage.py он возвращает правильный ответ, скажем, для каждого пользователя «да», «нет».

Однако, когда метод вызывается из шаблона, метод возвращается «да», «да». После некоторого устранения неполадок я обнаружил, что это действительно возвращает истину для каждого ответа. Что я могу сделать, чтобы решить эту проблему.

РЕДАКТИРОВАТЬ: я должен указать, что в настоящее время у меня есть 2 тестовых пользователя, один хранит True, а другой хранит False в is_active BooleanField

1 Ответ

0 голосов
/ 03 апреля 2020

Поскольку вы не опубликовали код представления, трудно сказать, все ли реализовано правильно.

Я также предполагаю, что вы показываете имя игрока в шаблоне и видите, что он возвращает фактические 2 игрока, которые у вас есть, а не дважды один и тот же игрок (что может объяснить, почему вы дважды видите «Да»).

Кроме того, все выглядит хорошо и должно работать.

...