Python 同一对象对同一类中两个不同对象的2个不同引用-DJANGO数据库

Python 同一对象对同一类中两个不同对象的2个不同引用-DJANGO数据库,python,django,django-models,relationship,Python,Django,Django Models,Relationship,我想要一个带有两个团队引用的匹配对象。 即(旧json数据库示例): 我希望能够轻松接触到每一支球队,并可能交换一方。这就是为什么我想使用Django示例2,因为这样我可以从Match对象引用每个团队。但这个例子给出了一个关于每个引用相互复制的错误 { “日期时间”:“, “匹配ID”:“0fb86bcf-c700-4429-b5a9-558ca9b95a03”, “团队ID”:“e372b7f4-008f-4503-beee-1d6756361fea”, “team2ID”:“802b4705

我想要一个带有两个团队引用的匹配对象。 即(旧json数据库示例):
我希望能够轻松接触到每一支球队,并可能交换一方。这就是为什么我想使用Django示例2,因为这样我可以从Match对象引用每个团队。但这个例子给出了一个关于每个引用相互复制的错误

{
“日期时间”:“,
“匹配ID”:“0fb86bcf-c700-4429-b5a9-558ca9b95a03”,
“团队ID”:“e372b7f4-008f-4503-beee-1d6756361fea”,
“team2ID”:“802b4705-d812-4a88-9246-b14bd18938d8”,
“格式”:3,
“除名”:“降级”,
“联盟”:联盟裁判,
“游戏”:联盟裁判,
}
Django示例1:

class Match(models.Model):
    ...
    team = models.ManyToManyField(
        Team,
        on_delete=models.CASCADE,
        )
Django示例2:

class Match(models.Model):
    ...
    team1 = models.OneToOneField(
         Team,
         on_delete=models.CASCADE,
         )
    team2 = models.OneToOneField(
         Team,
         on_delete=models.CASCADE,
         )

当使用
OneToOneField
(或任何其他相关字段)时,Django会在关系的另一端自动生成反向访问器。因此,在模型中,Django团队将自动创建一个名为
match
的属性来访问这个相关对象。问题是您有两个这样的字段,使得Django不知道使用它们的名称

您可以通过指定以下选项来解决此问题:

注意:使用
OneToOneField
意味着一个团队在
匹配
表中只能有一个条目(双方各一个条目)。所以在 本质上,一支球队只能参加两场比赛。也许你想 改用a

class Match(models.Model):
    ...
    team1 = models.OneToOneField(
        Team,
        on_delete=models.CASCADE,
        related_name='match_1'
    )
    team2 = models.OneToOneField(
        Team,
        on_delete=models.CASCADE,
        related_name='match_2'
    )