首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模型一对

Django模型一对
EN

Stack Overflow用户
提问于 2011-08-13 02:23:40
回答 4查看 977关注 0票数 2

我目前正在和django一起玩,我想建立一个简单的关系:一个舞蹈俱乐部的两个成员应该成对成对跳舞,才能参加舞蹈锦标赛。我已经为成员建立了一个简单的模型:

代码语言:javascript
复制
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

我还有一个锦标赛模型:

代码语言:javascript
复制
class Tournament(models.Model):
  name = models.CharField(max_length=32)
  def __unicode__(self):
    return self.firstname + ' ' + self.lastname

由于锦标赛的参与者是一对情侣,我需要定义一对情侣关系(至少这是我的猜测)。但我真的不知道我该怎么做。

tia以获取任何帮助和提示

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-13 02:35:28

您也许可以尝试定义一个名为“夫妇”的模型,以及与成员表的两个外键关系,以及它们所在的锦标赛的关系:

代码语言:javascript
复制
class Couple(models.Model):
    partner_a = models.ForeignKey(Member)
    partner_b = models.ForeignKey(Member)
    tournament = models.ForeignKey(Tournament)

我不确定你的要求,但我介绍的方式允许成员成为多个组合的一部分,并且一对组合对于锦标赛是独一无二的。取决于你想怎么做,你可能想要固定的情侣(即Stacey和Bob总是在一起跳舞)。在这种情况下,您可能希望在比赛之间建立多对多关系:

代码语言:javascript
复制
class Tournament(models.Model):
    couples = models.manyToManyField(Couple)

因此,一对情侣可以参加许多锦标赛,而一场锦标赛可以有多对情侣。

票数 3
EN

Stack Overflow用户

发布于 2011-08-13 02:29:37

您可以使用OneToOneField关系将成员映射到其他成员。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2011-08-13 02:33:54

我将假设一个注册会员可能会参加多个锦标赛,并在未来与不同的人配对。

但在锦标赛中,每个成员只能是一对中的一部分。

如果上面的话成立,我会这么做的,

代码语言:javascript
复制
class TournamentRegistration(models.Model):
    tournament = models.ForeignKey("Tournament")
    dancer_1 = models.ForeignKey("Member")
    dancer_2 = models.ForeignKey("Member")
    # ...etc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7044609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档