Django模型中ForeignKey的多个参数

-1 投票
1 回答
1511 浏览
提问于 2025-04-30 17:27

我有以下这段代码:

class Team(models.Model):
   shortName = models.CharField(max_length=255)
   fullName = models.CharField(max_length=255)
   desc = models.CharField(max_length=255)


class Match(models.Model):
    team1 = models.ForeignKey(Team, related_name='team1')
    team2 = models.ForeignKey(Team, related_name='team2')
    start_date = models.DateTimeField('date start')


class Bet(models.Model):
    user = models.ForeignKey(User)
    match = models.ForeignKey(Match)
    team = models.ForeignKey(Team)
    transaction = models.ForeignKey(Transaction)
    pub_date = models.DateTimeField('date published')

我想在Bet中添加一个参数,这个参数可以指向Match中的team1或team2。我尝试了以下方法:

team = models.ForeignKey(Match.team1, Match.team2)

但是这样会出现语法错误。那正确的做法是什么呢?

暂无标签

1 个回答

1

你的声明只是说明了模型中这个属性是什么类型的对象。在这个例子中,外键指向的是Team,所以正确的声明应该是

team = models.ForeignKey(Team)

另一方面,重复列出球队似乎不太高效,所以你可以简单地设置一个选择字段,用来表示在投注中选择了哪个球队。举个例子:

team = models.CharField(max_length=1, choices=(('H', 'Home team'), ('A', 'Away team')))

然后你的视图代码会根据这个选择来决定显示哪两支球队。

撰写回答