gpt4 book ai didi

python - 如何在同一个 HTML 页面上显示两个不同模型的数据

转载 作者:行者123 更新时间:2023-12-01 01:00:51 25 4
gpt4 key购买 nike

我有两个表,其中一个名为PlayerLkup,其中包含有关玩家的信息并用作查找表。我有另一个表(称为 BattingStats),其中包含玩家的统计数据(和 playerid)。 BattingStats 表是一对多的(playerid 被列出多次,他们参加的每个赛季一次)。

来自 PlayerLkup 的数据显示正常,并且它使用 URL 地址中的 playerid 来检索特定播放器。我的问题是如何在同一页面上使用 BattingStats 模型/表中的数据?我假设我的 View 页面是需要完成工作的地方。有没有一种方法可以将多个模型传递到一个 View 中?我尝试过相同的网址,不同的 View 。这似乎对我不起作用。我需要做什么?任何帮助将不胜感激。

我之前发布过这个问题(现已删除),但有人错误地将其标记为重复问题,因此没有受到任何关注。

models.py

class BattingStats(models.Model):
playerid = models.CharField(db_column='playerID', max_length=9)
year = models.IntegerField(db_column='Year', blank=True, null=True)
g = models.IntegerField(db_column='G', blank=True, null=True)
ab = models.IntegerField(db_column='AB', blank=True, null=True)
r = models.IntegerField(db_column='R', blank=True, null=True)
hr = models.IntegerField(db_column='HR', blank=True, null=True)
rbi = models.IntegerField(db_column='RBI', blank=True, null=True)
sb = models.IntegerField(db_column='SB', blank=True, null=True)

class PlayerLkup(models.Model):
playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
birthyear = models.IntegerField(db_column='birthYear', blank=True, null=True)
birthmonth = models.IntegerField(db_column='birthMonth', blank=True, null=True)
birthday = models.IntegerField(db_column='birthDay', blank=True, null=True)
birthstate = models.CharField(db_column='birthState', max_length=255, blank=True, null=True)
birthcity = models.CharField(db_column='birthCity', max_length=255, blank=True, null=True)
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)
weight = models.IntegerField(blank=True, null=True)
height = models.IntegerField(blank=True, null=True)

views.py

def player_info(request, playerid):
playerdata = PlayerLkup.objects.get(playerid=playerid)
return render(request, 'careerstats/playerpage.html', {'playerdata': playerdata})

urls.py

urlpatterns = [
path('player/<str:playerid>/', views.player_info, name='player_info'),

最佳答案

您可以在 View 中执行任何您喜欢的操作,并在上下文中传递任意数量的模型。

但在您的情况下,您实际上不需要更改 View ,但您应该更改模型。看起来 BattingStats 应该通过 playerid 字段与 PlayerLkup 建立关系。您应该将其设为外键(并将其称为player) - 请注意,您实际上根本不需要更改基础表,这可能很重要,因为这似乎是一个遗留数据库。

class BattingStats(models.Model):
player = models.ForeignKey('PlayerLkup', db_column='playerID')

现在在您的模板中您可以执行以下操作:

{{ playerdata.namefirst }}
{% for stat in playerdata.battingstats_set.all %}
{{ stat.year }}
{{ stat.g }}
...
{% endfor %}

(另外,请为您的字段指定更好的名称。它们不需要与 db 列相同,这就是 db_column 属性的用途。没有理由使用 single-字符字段名称,例如 g。)

关于python - 如何在同一个 HTML 页面上显示两个不同模型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com