我有两个表,一个叫做PlayerLkup
,它包含关于播放器的信息,并充当查找表。我有另一个表(称为BattingStats
),其中包含玩家的统计信息(以及playerid
)。BattingStats
表格是一对多(playerid
列出多次,每个赛季一次)。你知道吗
我来自PlayerLkup
的数据显示良好,它使用URL地址中的playerid
来检索特定的播放器。我的问题是如何将我的BattingStats
模型/表中的数据用在同一页上?我假设我的视图页面是工作需要完成的地方。有没有办法将多个模型传递到一个视图中?我试过相同的网址,不同的观点。这似乎对我不起作用。我需要做什么?任何帮助都将不胜感激。你知道吗
我以前发布过这个问题(后来删除了),但有人错误地将其标记为重复,所以没有引起任何注意。你知道吗
型号.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)
视图.py
def player_info(request, playerid):
playerdata = PlayerLkup.objects.get(playerid=playerid)
return render(request, 'careerstats/playerpage.html', {'playerdata': playerdata})
网址.py
urlpatterns = [
path('player/<str:playerid>/', views.player_info, name='player_info'),
可以在视图中执行任何操作,并在上下文中传递任意数量的模型。你知道吗
但在您的情况下,实际上不需要更改视图,但应该更改模型。看起来BattingStats应该通过
playerid
字段与playerkup建立关系。您应该将其设置为ForeignKey(并称之为player
)-注意,实际上根本不需要更改基础表,这可能很重要,因为这似乎是一个遗留数据库。你知道吗现在,您可以在模板中执行以下操作:
(另外,请为您的字段提供更好的名称。它们不需要与db列相同,这就是
db_column
属性的用途。没有理由使用像g
这样的单字符字段名。)万一你不想改变你的模型(我愿意),你可以:
在模板中,
playerdata
和battingdata
都可以作为模板变量使用。你知道吗相关问题 更多 >
编程相关推荐