django模型處理大多數情況下在幕後鏈接表格。 ForeignKey
字段類型足以實現此目的,那麼您只需使用ORM在查詢中加入表。這是我怎麼會設置您的表基於我最好的解讀一下你正在尋找:
from django.db import models
class School(models.Model):
psid = models.CharField(primary_key=True, max_length=5)
city = models.CharField(max_length=100)
def __unicode__(self):
return u"{0} ({1})".format(self.psid, self.city)
class Score(models.Model):
school = models.ForeignKey(School, null=False, db_column="psid")
score = models.IntegerField()
def __unicode__(sefl):
return u"Score({0}, {1})".format(self.school.psid, self.score)
然後以測試你的模型了:
$ ./manage.py syncdb
$ ./manage.py shell
>>> from schools.models import School, Score
>>> school1 = School(psid="S1", city="Springfield")
>>> school1
S1 (Springfield)
>>> school1.save()
>>> School.objects.get(psid="S1")
S1 (Springfield)
>>> school2 = School(psid="S2", city="Springfield")
>>> school2.save()
>>> score1 = Score(school=school1, score=3)
>>> score1
Score(S1, 3)
>>> score1.school.psid
S1
>>> score2 = Score(school=school1, score=2)
>>> score3 = Score(school=school2, score=5)
>>> score1.save()
>>> score2.save()
>>> score3.save()
>>> school1.score_set.all()
[Score(S1, 3), Score(S1, 2)]
>>> school2.score_set.all()
[Score(S2, 5)]
>>> Score.objects.all()
[Score(S1, 3), Score(S1, 2), Score(S2, 5)]
>>> Score.objects.filter(school__psid="S1")
[Score(S1, 3), Score(S1, 2)]
我希望可以幫助你。
我很困惑,你想獲取相關的學校對象psid值或爲每個與psid列無關的每個Score對象命名爲psid的另一個獨立字段(btw類名稱不應該是複數形式)? – yuvi
你好,是分數應該是單數。我編輯了這個問題來解決這個問題。我的目標是能夠用psid值獲取學校對象。在我的模板中,我展示了每所學校的分數。 – wsvincent
你爲什麼認爲你需要另一個領域? –