2011-08-12 4 views
2

나는 현재 django와 놀고 있으며 간단한 관계를 모델링하고 싶다. 댄스 클럽에 참여한 두 멤버는 춤추는 커플로 짝을 지어 춤추는 토너먼트에 참가해야한다. 대회에 참여 내가 몇-관계를 정의 할 필요가 몇 (에서이기 때문에Django 모델 한 쌍

class Tournament(models.Model): 
    name = models.CharField(max_length=32) 
    def __unicode__(self): 
    return self.firstname + ' ' + self.lastname 

:

class Member(models.Model): 
    firstname = models.CharField(max_length=32) 
    lastname = models.CharField(max_length=32) 
    member_id = models.IntegerField(unique=True) 
    def __unicode__(self): 
    return self.firstname + ' ' + self.lastname 

나는 또한 대회의 모델을 가지고 : 난 이미 회원에 대한 간단한 모델을 가지고 적어도 그것은 나의 추측 일 것이다). 하지만 난 그걸 어떻게 할 수 있는지 정말로 모르겠다.

어떤 도움 TIA 및 팁

답변

3

당신은 어쩌면 그들이에있는 대회에 대한 관계, 부부 같은라는 모델 및 회원 테이블이 개 외래 키 관계를 정의하는 시도 할 수 :

당신은 대회 당 커플 클래스를 만들 수 있습니다
class Couple(models.Model): 
    partner_a = models.ForeignKey(Member) 
    partner_b = models.ForeignKey(Member) 
    tournament = models.ForeignKey(Tournament) 

저는 귀하의 요구 사항을 잘 모르겠습니다 만, 제가 제시 한 방법으로 회원들이 여러 커플에 참여할 수 있으며, 한 커플은 토너먼트에 고유합니다. 원하는 방식에 따라 커플을 고정해야 할 수 있습니다 (예 : Stacey와 Bob은 항상 함께 춤을 춥니 다).

class Tournament(models.Model): 
    couples = models.manyToManyField(Couple) 

그래서 부부가 많은 대회에있을 수 있고, 대회는 많은 커플을 가질 수있다 :이 경우 당신은 아마 부부 토너먼트에서 다 대다 관계를 갖고 싶어한다.

+0

감사합니다. 제안 된 코드는 처음에는 나에게 적합하지 않았다. (당신은 related_name 속성을 설정해야한다.)하지만 가장 잘 맞는다. – tr9sh

1

당신은 다른 회원들에게 회원을 매핑 할 OneToOneField 관계를 사용할 수 있습니다.

1

등록 된 회원이 여러 토너먼트에 참가할 가능성이 있다고 생각합니다. 길 아래에서 다른 사람들과 짝을 지을 수 있습니다.

그러나 대회 내에서 각 회원은 한 쌍의 일부일 수 있습니다.

위가 보유하고있는 경우, 내가 할 것,

class TournamentRegistration(models.Model): 
    tournament = models.ForeignKey("Tournament") 
    dancer_1 = models.ForeignKey("Member") 
    dancer_2 = models.ForeignKey("Member") 
    # ...etc 
1

한 가지 방법은 각 회원에게 파트너가 제공하는 것입니다 :

partner = models.OneToOneField('self') 

을하지만 당신은 대회마다 수행 커플 링을 할 수 있습니다 , 그래서 회원 클래스는 최고의 장소가 아닐 수도 있습니다.

class Couple(models.Model): 
    tournament = models.ForeignKey('Tournament') 
    member1 = models.ForeignKey('Member') 
    member2 = models.ForeignKey('Member')