擅长:python、mysql、java
<p>这是解决这个问题的另一种方法。
我没有创建循环依赖项,而是创建了一个额外的表来存储玩家和团队之间的关系。最后看起来是这样的:</p>
<pre><code>class Team(Model):
name = CharField(max_length=50)
def get_captain(self):
return PlayerRole.objects.get(team=self).player
class Player(Model):
first_name = CharField(max_length=50)
last_name = CharField(max_length=50, blank=True)
def get_team(self):
return PlayerRole.objects.get(player=self).team
PLAYER_ROLES = (
("Regular", "Regular"),
("Captain", "Captain")
)
class PlayerRole(Model):
player = OneToOneField(Player, primary_key=True)
team = ForeignKey(Team, null=True)
role = CharField(max_length=20, choices=PLAYER_ROLES, default=PLAYER_ROLES[0][0])
class Meta:
unique_together = ("player", "team")
</code></pre>
<p>在存储方面,它可能比建议的解决方案效率稍低,但它避免了循环依赖性,并保持了数据库结构的干净和清晰。
欢迎评论。</p>