0
我正在使用Django。我有一個夾具模型,它看起來像:Django:與同一類型的多個相關字段的模型
class Fixture(models.Model):
home_team = models.ForeignKey(Team, related_name="home_fixture_set")
home_score = models.IntegerField(max_length=2, blank=True, null=True)
away_team = models.ForeignKey(Team, related_name="away_fixture_set")
away_score = models.IntegerField(max_length=2, blank=True, null=True)
when = models.DateTimeField()
我有一個團隊模式,看起來像:
class Team(models.Model):
name = models.CharField(max_length=60)
club = models.ForeignKey(Club)
我能夠訪問的「家」燈具列表特定通過home_fixture_set相關團隊:
my_team.home_fixture_set.all()
我可以類似地訪問「離開」燈具。但是,我不知道如何將兩者結合起來,並獲得該球隊參與的所有裝置的列表?例如:
my_team.home_and_away_fixture_set.all()
注意home_and_away_fixture_set必須返回一個QuerySet,這樣我可以在其上進行過濾:
my_team.home_and_away_fixture_set.filter(when__lte=datetime.datetime.now())
是否有可能通過模型查詢API來做到這一點?如果沒有,是否可以通過Manager.raw()查詢合理輕鬆地完成此操作?
感謝 周杰倫
您的答案都產生相同的*單*查詢。不要忘記,查詢集是懶惰的,所以在你的第二個例子中生成的兩個查詢集在評估之前一起進行OR運算。 – shadfc 2011-04-14 22:59:07
@shadfc感謝您的收穫。看起來他們在這種情況下產生完全相同的SQL。 – DTing 2011-04-15 00:16:33
謝謝你們,我會給上述方法一個去 - 它看起來好像這將做我剛纔的東西:) – 2011-04-15 09:31:01