Django模型方法在从shell调用时返回正确的响应,但在从模板调用时不返回



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 %}

我正在开发一个数据库web应用程序(学习django(,在该应用程序中,团队中的球员及其统计数据被跟踪并存储在psql数据库中。当从manage.py shell调用player_status方法时,它会返回正确的响应,例如,对于每个用户,"yes"、"no"。

但是,当从模板调用该方法时,该方法将返回"yes"、"yes"。经过一些故障排除,我发现它确实对每个响应都返回true。我能做些什么来解决这个问题。

编辑:我应该指定我目前有两个测试用户,一个存储True,另一个存储False在is_active BooleanField 中

由于您没有发布视图代码,因此很难判断是否所有内容都实现正确。

我还猜测,你在模板中显示了玩家名称,你会看到它返回了你拥有的实际2名玩家,而不是同一玩家的两次(这可能解释了为什么你会两次看到Yes(。

除此之外,它看起来很好,应该可以工作。

最新更新