与django的一对多关系

cro*_*jer 4 django django-models foreign-key-relationship

我打算创建一个团队系统,每个团队可能包含多个参赛者.参赛者实际上是auth.User.类似的东西:

Team:  
    Contestant1
    Contestant2
    .
    .
    ContestantN
Run Code Online (Sandbox Code Playgroud)

由于参赛者实际上是一个我无法修改的用户,因此可以让团队成为外国人.实现这一目标的最佳方法是什么?

我的方式是:

  • OneToOne为用户创建指向团队的配置文件.
  • 定义ManyToMany用户必须是唯一的用户和团队之间的关系.

暂停

我正在重新设计我的应用程序的结构,所以我将再次重新解释这个问题
感谢您的回复,我会考虑它们,看看它们中的一个是否合适.

Tom*_*ski 8

你可以这样做:

class Team(models.Model):
    contestants = models.ManyToManyField(User, through='Contestant')

class Contestant(models.Model):
    team = models.ForeignKey(Team)
    user = models.ForeignKey(User)
    [here go Contestant data fields]
Run Code Online (Sandbox Code Playgroud)

这允许一个用户参加不同的团队,但如果您不想允许这样,您可以向Contestant.user添加unique = True.