我想弄清楚如何在Django中过滤一些查询,我的模型设置如下:
class Team(models.Model):
name = models.CharField()
class TeamPosition(models.Model):
description = models.CharField()
team = models.ForeignKey(Team)
class Player(models.Model):
teamposition = models.ForeignKey(TeamPosition)
team = models.ForeignKey(Team)
joined_date = models.DateField()
left_date = models.DateField(blank=True, null=True)
person = models.ForeignKey(Person)
class Person(models.Model):
name = models.CharField()
我想找到回答这些问题的问题集(为了清楚起见,移到下面):
如果我从TeamPosition对象开始,它就更容易理解(但是没有给我一个团队的查询集)。在
样本数据集:
对象集1:
^{pr2}$对象集2:
Team(name="Pears")
TeamPosition(team="Pears", description="Forward")
Player(team="Pears", teamposition="Forward", joined_date="2014-01-01", left_date=null, person="Carol")
TeamPosition(team="Pears", description="Defense")
Player(team="Pears", teamposition="Defense", joined_date="2015-01-01", left_date=2017-01-01, person="Bill")
TeamPosition(team="Pears", description="Goalie")
Player(team="Pears", teamposition="Goalie", joined_date="2014-01-01", left_date=null, person="Susan")
对象集3:
Team(name="Oranges")
TeamPosition(team="Oranges", description="Forward")
TeamPosition(team="Oranges", description="Forward")
TeamPosition(team="Oranges", description="Goalie")
对象集4:
Team(name="Bananas")
TeamPosition(team="Bananas", description="Forward")
Player(team="Bananas", teamposition="Forward", joined_date="2014-01-01", left_date=null, person="Joe")
TeamPosition(team="Bananas", description="Defense")
Player(team="Bananas", teamposition="Defense", joined_date="2015-01-01", left_date=2017-01-01, person="Angela")
TeamPosition(team="Bananas", description="Goalie")
Player(team="Bananas", teamposition="Goalie", joined_date="2014-01-01", left_date="2016-09-30", person="Kelly")
因此,基于这些对象,我期望得到以下结果:
哪些团队有可用的团队位置?(可用表示没有当前玩家的团队位置)
Queryset should return Object 1 (Apples) and Object 3 (Oranges)
哪些球队的所有队员都有现役球员?(与上述相反)(当前指的是没有左边日期或将来没有左边日期的玩家)
Queryset should return Object 2 (Pears) and Object 4 (Bananas)
哪支球队在30天内会有空位?在
Queryset should return Object 4 (Bananas)
希望这能让事情变得更清楚。在
注:之前有一个汽车的例子(因此第一反应),但它似乎不清楚,所以创造了一个更好的例子
在回答之前,先问一个问题:行
carmodel = models.ForeignKey(Model)
可以吗?或者应该改为ForeignKey(CarModel)
?尝试此查询(这将为您提供所有CarCompany对象,其CarModelYear的
last_availability
日期在将来:为了检查
^{pr2}$last_availability
是在将来还是空白/空,我将使用Q objects:对于您的第二个示例,我无法思考,但是在同一个查询中(它回答了您的问题})
Which Teams have open TeamPositions?
和{但我不确定你说的
Which Teams have no TeamPositions without current Players?
是什么意思如果你能解释一下。。。在相关问题 更多 >
编程相关推荐