当前位置: 首页 > 面试题库 >

Django循环模型参考

商天逸
2023-03-14
问题内容

我开始在一个小型的足球联赛管理网站上工作(主要是出于学习目的),我无法确定Django模型的关系。为了简单起见,假设我有两种类型的对象-玩家和团队。自然,一个玩家属于一个团队,因此在Player模型中就是一个ForeignKey(Team)。所以我去:

class Team(models.Model):
    name = models.CharField()
class Player(models.Model):
    name = models.CharField()
    team = models.ForeignKey(Team)

然后,我希望每个团队都有一个队长,该队长将是其中一名球员,因此在团队模型中将成为一名ForeignKey(Player)。但这会产生循环依赖。当然,我的Django经验有限,但这似乎是一个简单的问题,尽管我无法弄清楚我在概念上做错了什么。


问题答案:

这是解决此问题的另一种方法。我没有创建循环依赖关系,而是创建了一个额外的表来存储球员和球队之间的关系。所以最终看起来像这样:

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")

在存储方面,它的效率可能比建议的解决方法略低,但是它避免了循环依赖,并保持了数据库结构的整洁。欢迎发表评论。



 类似资料:
  • 问题内容: 我真的没有得到这个,所以如果有人可以解释它是如何工作的,我将非常感激。我有两个应用程序,“帐户”和“主题” …这是我的设置列表: 在帐户中,我正在尝试执行以下操作: 在我的主题模型中: Django踢出以下错误: 这是某种循环进口问题吗?我尝试使用一个懒惰的引用,但这似乎也不起作用! 问题答案: 删除的导入,并将模型名称用作字符串。

  • 问题内容: 这是输出: 这是模板: 但是模板中的循环不起作用。什么都没有出现。它甚至没有给我一个错误。我怎样才能解决这个问题?应该显示姓氏和名字,像这样: 问题答案: 完成插入新值后,可以通过禁用defaultdict的默认功能来避免复制到新dict : 说明 将在Django模板变量解析算法将尝试解析为第一,使用时其解析为一个空列表(列表)。 要禁用默认列表为空列表并让Django失败,n然后继

  • 我有这样的疑问: 在模板中,我希望通过以下方式获取数据: 但不是产生数据作为: 它的结果是 发生了什么?我有理由在列表中存储数据。如何分别访问每个数据。谢谢 用途:颜色存储在数据字段中为:,因此我希望实现: 编辑类Hello(models.Model):用户=模型。外键(用户)数据=模型。字符域(最大长度=255)

  • 问题内容: 如何在Django模板中编写数字循环?我的意思是 问题答案: 我使用了一种简单的技术,该技术非常适合没有特殊标签且没有其他上下文的小情况。有时候这很方便

  • 问题内容: 这是我的代码: 但显示错误, 我能做什么 , 谢谢 问题答案: views.py: HTML:

  • 主要内容:,创建模型,操作数据(CRUD),其他数据操作,,链接模型模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段。模型是在 app/models.py 中定义(在我们的例子中是:myapp/models.py) 创建模型 下面是创建一个 Dreamreal 模型实例 − 每一个模型继承自django.db.models.Model。 我们类有4个属性(3 CharField和1个整数),这将是表中的字段。 Meta类与db_table