爲什麼下面的返回結果:Django的過濾器提供了意外的結果
>>> count = PlayerYear.objects.filter(team__id=3128).count()
>>> count # Output: 0
但這返回32(今年的海軍上將法拉格特學院橄欖球隊球員的數量):
>>> count = PlayerYear.objects.filter(team__id=1).count()
>>> count # Output: 32
鑑於以下表格(teams_team):
---------------------------------------------------------
| id | school_id | admin_display |
---------------------------------------------------------
| 3128 | 1 | Admiral Farragut Academy: Football |
而以下(縮寫)型號:
class PlayerYear(models.Model):
player = models.ForeignKey(Player)
team = models.ForeignKey(Team)
# snip
和
class Team(models.Model):
legacy_id = models.IntegerField(blank=True, null=True)
school = models.ForeignKey(School)
# snip
和
class School(models.model):
legacy_id = models.IntegerField(blank=True, null=True)
school = models.CharField(max_length=255, blank=True, null=True)
# snip
我不明白爲什麼我得到的結果提供school_id
值時,即使我指定team__id
作爲過濾器。我如何使用團隊ID(3128)獲得結果?
3128是您的團隊ID還是legacy_id? –
'legacy_id'可能相關也可能不相關。表中沒有該名稱的列,執行您建議的查詢將返回任何結果。我寧願認爲它是以前代碼迭代的遺留物。如果我在這個假設中錯了,我將它包括在內。 –
@ Felipe Cruz:3128是團隊'id'。 –