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 열과 관련이없는 psid라는 각 Score 개체에 대해 다른 독립 필드를 갖기를 원하십니까 (btw 클래스 이름은 복수형이 아니어야합니다)? – yuvi
안녕하세요 yuvi, 예 점수가 단수 여야합니다. 나는 그것을 수정하기 위해 질문을 편집했다. 내 목표는 psid 값으로 학교 개체를 가져올 수 있습니다. 내 템플릿에는 각 학교의 점수가 표시됩니다. – wsvincent
왜 다른 분야가 필요하다고 생각하십니까? –