这是我的models.py
from django.db import models
# Create your models here.
class Leagues(models.Model):
LeagueName = models.CharField(max_length=200)
class Team(models.Model):
TeamName = models.CharField(max_length=200)
class LeagueTable(models.Model):
league = models.ForeignKey(Leagues)
team = models.CharField(max_length=200)
matches_played = models.IntegerField()
matches_won = models.IntegerField()
matches_drawn = models.IntegerField()
matches_lost = models.IntegerField()
points = models.IntegerField()
class FixtureTable(models.Model):
league = models.ForeignKey(Leagues)
fixture_date = models.DateField('Fixture Date')
team_one = models.CharField(max_length=200)
team_one_score = models.IntegerField()
team_two = models.CharField(max_length=200)
team_two_score = models.IntegerField()
在“类FixtureTable”中,我希望team_one和team_two链接到“class Team”模型中的两个不同团队。如何建立多重关系,或者是否可能。
PS:这纯粹是一个菜鸟,在编程方面有一点经验,但没有使用python或数据库的经验。
三江源。
答案 0 :(得分:1)
您可以根据需要为同一模型创建任意数量的ForeignKeys。我怀疑是什么让你沮丧是Django给你一个错误,说你需要指定一个相关的名字。
默认情况下,Django在表单<model>_set
的相反模型上创建一个属性。所以在以下场景中:
class FixtureTable(models.Model):
team_one = models.ForeignKey(Team)
Django会将相关经理添加到Team
fixturetable_set
。如果你那么:
class FixtureTable(models.Model):
team_one = models.ForeignKey(Team)
team_two = models.ForeignKey(Team)
Django会尝试添加相同的属性两次,显然会失败。修复是指定related_name
,因此每个人都可以拥有唯一的相关管理器:
class FixtureTable(models.Model):
team_one = models.ForeignKey(Team, related_name='team_one_fixturetables')
team_two = models.ForeignKey(Team, related_name='team_two_fixturetables')
然后,一切都会好起来的。您可以为related_name
指定您喜欢的任何内容,只要它对于模型是唯一的。