gpt4 book ai didi

python - (初学者)第一个 Django Web 应用程序 - models.py

转载 作者:行者123 更新时间:2023-12-01 04:12:22 24 4
gpt4 key购买 nike

我正在开始我的第一个 Django Web 应用程序 [在完成 Django 官方教程和 Django Girls 教程之后].. 我在设置模型时遇到了一些麻烦。我现在有了一些可行的方法,但我觉得它效率很低,我宁愿在继续之前学习正确的方法..

开始 - 当学习一门新的编程语言时,很多人(在互联网上)建议选择一个你喜欢的主题/爱好,并用它来做一个项目。我非常喜欢体育运动,并且想重新创建一个虚拟记分牌,类似于 ESPN 或任何其他体育网站。

我的 models.py 目前看起来像这样 -

class Game(models.Model):
# start_time = models.DateTimeField()
today = models.DateField(default=date.today)
game_id = models.AutoField(primary_key=True)
game_outcome = models.CharField(max_length=8)
game_quarter = models.CharField(max_length=1)
game_clock = models.PositiveSmallIntegerField()
away_team_id = models.CharField(max_length=3)
away_team_class = models.CharField(max_length=3)
away_team_city = models.CharField(max_length=13)
away_team_name = models.CharField(max_length=12)
away_team_score = models.PositiveSmallIntegerField()
home_team_id = models.CharField(max_length=3)
home_team_class = models.CharField(max_length=3)
home_team_city = models.CharField(max_length=13)
home_team_name = models.CharField(max_length=12)
home_team_score = models.PositiveSmallIntegerField()

但我觉得这有太多变数,而且不是正确的处理方法。我也尝试过类似的事情......

class Day(models.Model):
today = models.DateField(default=date.today)

class Game(models.Model):
game_id = models.AutoField(primary_key=True)
game_outcome = models.CharField(max_length=8)
game_quarter = models.CharField(max_length=1)
game_clock = models.PositiveSmallIntegerField()
away_team_id = models.CharField(max_length=3)
away_team_score = models.PositiveSmallIntegerField()
home_team_id = models.CharField(max_length=3)
home_team_score = models.PositiveSmallIntegerField()

class Team(models.Model):
team_id = models.ForeignKey('Team')
team_class = models.CharField(max_length=3)
team_city = models.CharField(max_length=13)
team_name = models.CharField(max_length=12)

每天有 0 到 xx 场比赛。每场比赛都有:结果(空或“最终”)、当前季度(“1”或空)、当前时钟(“00:00”或空)、客队(“CHA”)、客场得分(“99”) )、主队('TOR') 和主场得分('102')。然后我会获取团队 ID 并将其与类(class)团队进行比较。每个球队都有一个类(class)(CSS:“tor”)、城市(“多伦多”)和全名(“猛龙队”)。

但它仍然没有留在我的脑海中。我可以在 python shell 中获取所有信息并将其输出到我的 html/css,但我觉得效率很低。此外,每一天都有自己的 html 页面(类似于 website.com/nba/scores/20150112/),并且充满了当天的所有比赛。

抱歉,如果这个问题太初学者,无法提出;我花了很多时间寻找答案,最后决定在 stackoverlow 上发帖(我的第一个问题)。

任何信息或建议将不胜感激。

最佳答案

首先,您需要了解使用的外键越多,给数据库带来的负载就越大。但它也很大程度上取决于views.py 代码。其次,如果您使用外键,则不需要使用 team_id 作为字段名称。只需提及类名,它就会自动为该字段创建一个 _id

看下面的代码:

class Game(models.Model):
start_time = models.DateTimeField()
today = models.DateField(default=date.today)
game_id = models.AutoField(primary_key=True) # You don't need this line, an id field is created for EVERY model class even if you don't specify it.
game_outcome = models.CharField(max_length=8)
game_quarter = models.CharField(max_length=1)
game_clock = models.PositiveSmallIntegerField()
away_team = models.ForeignKey('Team')
home_team = models.ForeignKey('Team')

class Team(models.Model):
team_class = models.CharField(max_length=3)
city = models.CharField(max_length=13)
name = models.CharField(max_length=12)
score = models.PositiveSmallIntegerField()

您可以看到我创建了另一个名为 Team 的类,并将四个字段放在原始 Game 类中重复的字段上。然后,我使用 ForeignKeyTeam 类连接到 Game 类。如果您安装 SQLiteBrowser 并检查数据库文件,那么您将看到 away_team 字段实际上是数据库中的 away_team_id 字段,因为 Django 会处理这一点。您不需要创建 id 字段,只需使用 ForeignKeyManyToManyField 等关系。这就是我的想法我唯一能建议的就是。

从这个项目的范围来看,您不会因为太多关系而给数据库带来太大的压力,所以现在不用担心。就是这样。如果您有任何更具体的问题,可以询问。干杯! :)

附注我不确定您的项目详细信息,因此请使用您认为合适的关系,无论是一对一、多对一还是多对多等。请阅读文档以获取更多详细信息。 :)

关于python - (初学者)第一个 Django Web 应用程序 - models.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34756843/

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