尝试引用外键字段.为什么它还显示引用表的名称?

  • 本文关键字:引用 显示 字段 python django
  • 更新时间 :
  • 英文 :


我正在尝试显示模板中的数据。我遇到的问题是引用PlayerInfoplayeridBattingStats表中的外键。当我显示它时,该字段的数据正在显示,但它被括在括号中,前面是ReferencedTable object.所以对我来说,它看起来像这样PlayerInfo object (smithjo05).为什么要这样做,我如何让它只显示playerid?帮助得到重视。谢谢。

视图

def battingview(request):
playerinfo = PlayerInfo.objects.all()
playerstats = BattingStats.objects.filter(year=2018)
return render(request, 'playerstats/battingRegStnrd2018.html', {'playerinfo':playerinfo,'playerstats': playerstats})

模型

class BattingStats(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True)
playerid = models.ForeignKey('PlayerInfo', models.DO_NOTHING, db_column='playerID', blank=True, null=True)
player = models.CharField(db_column='Player', max_length=255, blank=True, null=True)
hr = models.IntegerField(db_column='HR', blank=True, null=True)
rbi = models.IntegerField(db_column='RBI', blank=True, null=True)
ba = models.FloatField(db_column='BA', blank=True, null=True)
class PlayerInfo(models.Model):
playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
namefirst = models.CharField(db_column='nameFirst', max_length=255, blank=True, null=True)
namelast = models.CharField(db_column='nameLast', max_length=255, blank=True, null=True)
height = models.IntegerField(blank=True, null=True)
debut = models.CharField(max_length=255, blank=True, null=True)
finalgame = models.CharField(db_column='finalGame', max_length=255, blank=True, null=True)

.HTML

{% for index in playerstats %}
<td>{{ index.playerid }}</td>
<td>{{ index.year}}</td>
<td>{{ index.age}}</td>
<td>{{ index.team}}</td>
<td>{{ index.league}}</td>
{% endfor %}
{% for index in playerstats %}
{{ index.playerid }}
{% endfor %}

浏览器

PlayerInfo object (smithjo05) 
PlayerInfo object (cruzne02)  
PlayerInfo object (jonesad01)

您只需要将__str__方法添加到PlayerInfo模型中:

class PlayerInfo(models.Model):
playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
namefirst = models.CharField(db_column='nameFirst', max_length=255, blank=True, null=True)
namelast = models.CharField(db_column='nameLast', max_length=255, blank=True, null=True)
height = models.IntegerField(blank=True, null=True)
debut = models.CharField(max_length=255, blank=True, null=True)
finalgame = models.CharField(db_column='finalGame', max_length=255, blank=True, null=True)
def __str__(self):
return self.playerid

这允许在将实例转换为字符串时更改实例的默认表示形式,例如在模板中。

最新更新