我继承了一个提供高中体育信息的Django应用程序。我最近收到了修改某一组数据的请求,因此只显示当前季节的信息,我这样做了:
teams = Team.objects.filter(season__school_year__in=school_year_filter_list)
(school_year_filter_list
包含[1,3]
)
此查询导致pgpool(Postgres数据库池/复制实用程序)中的错误,因此我无法使用它。作为旁注,查询在Python shell中正常工作,当我绕过pgpool并直接使用Postgres时。但是,我们的网络架构决定了pgpool的使用,所以我试图找到另一种方法来检索相同的数据。
你能否帮助我确定在当前的SchoolYear中让所有球队获得一个赛季的另一种方式?
(简化)模型如下所示:
class Team(models.Model):
season = models.ForeignKey(Season)
class Season(models.Model):
school_year = models.ForeignKey(SchoolYear, blank=True, null=True)
class SchoolYear(models.Model):
school_year = models.CharField(max_length=150)
'_schoolyear'表格如下:
id | school_year
----+-------------
1 | 2010-2011
2 | 2009-2010
3 | 2011-2012
答案 0 :(得分:1)
最后,我修改了另一个模型来完成这项工作。我没有解析年份以获得活跃的季节,而是在SchoolYear模型中添加了一个“活动”标志,并修改了我的查询以检查该标志:
def queryset(self, request):
qs = super(PlayerYearAdmin, self).queryset(request)
return qs.filter(team__season__school_year__active=True)
答案 1 :(得分:0)
teams = Team.objects.filter(season__school_year__id__in=school_year_filter_list)
?
你的school_year_filter_list
是学年ID列表是不是正确的?
答案 2 :(得分:0)
小注意:我看到'django-admin'标签,所以我认为你将= _ [1,2]中的season__school_year_ 添加到URL查询字符串中,例如/ admin / sports / team /?season _school_year__in = [1,2]这是对的吗?
如果是,您是否确定school_year_filter_list包含列表[1,3]
,而不是包含列表repr
的{{1}}的字符串
您能否向我们提供有关pgpool或Django ORM返回错误的数据?