我目前正在和django一起玩,我想建立一个简单的关系:一个舞蹈俱乐部的两个成员应该成对成对跳舞,才能参加舞蹈锦标赛。我已经为成员建立了一个简单的模型:
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我还有一个锦标赛模型:
class Tournament(models.Model):
name = models.CharField(max_length=32)
def __unicode__(self):
return self.firstname + ' ' + self.lastname由于锦标赛的参与者是一对情侣,我需要定义一对情侣关系(至少这是我的猜测)。但我真的不知道我该怎么做。
tia以获取任何帮助和提示
发布于 2011-08-13 02:35:28
您也许可以尝试定义一个名为“夫妇”的模型,以及与成员表的两个外键关系,以及它们所在的锦标赛的关系:
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)因此,一对情侣可以参加许多锦标赛,而一场锦标赛可以有多对情侣。
发布于 2011-08-13 02:29:37
您可以使用OneToOneField关系将成员映射到其他成员。
class Member(models.Model):
firstname = models.CharField(max_length=32)
lastname = models.CharField(max_length=32)
member_id = models.IntegerField(unique=True)
partner = models.OneToOneField('Member', unique=True) #This should suffice.
def __unicode__(self):
return self.firstname + ' ' + self.lastname发布于 2011-08-13 02:33:54
我将假设一个注册会员可能会参加多个锦标赛,并在未来与不同的人配对。
但在锦标赛中,每个成员只能是一对中的一部分。
如果上面的话成立,我会这么做的,
class TournamentRegistration(models.Model):
tournament = models.ForeignKey("Tournament")
dancer_1 = models.ForeignKey("Member")
dancer_2 = models.ForeignKey("Member")
# ...etchttps://stackoverflow.com/questions/7044609
复制相似问题