Django模型a对
我现在和django一起玩,我想建立一个简单的关系:一个舞蹈俱乐部的两名成员应该作为舞伴配对,以便参加舞蹈比赛。我已经为成员们提供了一个简单的模型:Django模型a对,django,model,relation,Django,Model,Relation,我现在和django一起玩,我想建立一个简单的关系:一个舞蹈俱乐部的两名成员应该作为舞伴配对,以便参加舞蹈比赛。我已经为成员们提供了一个简单的模型: class Member(models.Model): firstname = models.CharField(max_length=32) lastname = models.CharField(max_length=32) member_id = models.IntegerField(unique=True) def __
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如需任何帮助和提示,您可以使用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
我假设一个注册会员可能会参加不止一次的比赛,并与不同的人结对 但在一个锦标赛中,每个成员只能是一对的一部分 如果上述情况成立,我会这样做
class TournamentRegistration(models.Model):
tournament = models.ForeignKey("Tournament")
dancer_1 = models.ForeignKey("Member")
dancer_2 = models.ForeignKey("Member")
# ...etc
一种方法是给每个成员一个合伙人:
partner = models.OneToOneField('self')
但是您可能希望仅在每个锦标赛中进行耦合,因此成员类可能不是最佳位置。您可以为每个锦标赛创建两个类:
class Couple(models.Model):
tournament = models.ForeignKey('Tournament')
member1 = models.ForeignKey('Member')
member2 = models.ForeignKey('Member')
您可以尝试定义一个名为“夫妇”的模型,以及与成员表的两个外键关系,以及它们所处的锦标赛的关系:
class Couple(models.Model):
partner_a = models.ForeignKey(Member)
partner_b = models.ForeignKey(Member)
tournament = models.ForeignKey(Tournament)
我不确定你的要求,但我介绍的方式允许会员成为多对情侣的一部分,而一对情侣是锦标赛中独一无二的。取决于你想怎么做,你可能希望有固定的情侣(例如斯泰西和鲍勃总是一起跳舞)。在这种情况下,你可能会希望从一场比赛到一对一对夫妇有一种多对多的关系:
class Tournament(models.Model):
couples = models.manyToManyField(Couple)
所以一对夫妇可以参加很多比赛,一场比赛可以有很多对夫妇。谢谢。您提出的代码一开始不适合我(您必须设置相关的_name属性),但它最适合我。