【发布时间】:2021-06-30 05:06:12
【问题描述】:
我有一个庞大的运动队列表,他们将各自的联赛作为外键(NBA、NCAA、MLB、NFL)。
在我的 Django 表单中,我试图仅使用 MLB 键过滤掉团队,但是当我使用 Objects.filter(league='MLB') 进行查询时,我收到一个错误,告诉我它需要 id 号.但是当我执行 Objects.filter(league=3) 时,我没有收到错误但查询集为空。
Objects.all() 返回所有联赛的所有球队。如果我运行一个 for 循环,我可以打印出所有球队的联赛,但我似乎无法通过它们进行搜索。
我不确定我做错了什么。感谢您的帮助。
Models
class TeamName(models.Model):
name = models.CharField(max_length=100, null=False, blank=False)
abbreviation = models.CharField(max_length=10, null=False, blank=False)
league = models.ForeignKey(
'League', null=False, blank=False, on_delete=models.CASCADE)
def __str__(self):
return self.name
class League(models.Model):
leagues = (
('MLB', ('MLB')),
('NBA', ('NBA')),
('NCAAB', ('NCAAB')),
('NFL', ('NFL')),
)
name = models.CharField(
max_length=10, choices=leagues, null=False, blank=False)
def __str__(self):
return self.name
Forms
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
seasons = Season.objects.filter(name='MLB2021')
names = [(season.id, season.name) for season in seasons]
self.fields['season'].choices = names
team_names = TeamName.objects.filter(league='MLB')
teams = [(team.id, team.name)for team in team_names]
self.fields['name'].choices = teams
【问题讨论】:
-
你也可以分享联赛模型吗?