繁体   English   中英

两个带有外键的表引用另一个NameError

[英]Two tables with foreign key referencing the other, NameError

我正在尝试使用peewee在数据库中使用外键创建表。
玩家表具有对团队表的ForeignKey,而团队表具有对玩家表的ForeignKey。 当我运行代码时,我收到NameError: name 'Team' is not defined
这是我的代码:

class Player(Model):
    nickname = CharField(max_length=30)
    steam_id = CharField(max_length=15)
    team = ForeignKeyField(Team)
    class Meta:
        database = db

class Team(Model):
    name = CharField(max_length=30)
    captain = ForeignKeyField(Player)
    class Meta:
        database = db
Player.create_table()
Team.create_table()

有人能帮我吗? :)

你得到这个错误,因为你引用TeamPlayer ,你定义了前Team 您在这里有一个循环依赖性。 Team取决于PlayerPlayer则取决于Team

我的第一个建议是删除其中一个依赖项。 您是否真的需要在两个表中都引用另一个?

如果您这样做,则peewee文档中有专门的章节专门处理这种情况: http ://peewee.readthedocs.org/en/latest/peewee/models.html#circular-foreign-key-dependencies

您需要使用DeferredForeignKey,它使用Django样式的字符串输入法,但附带说明它不会为您创建数据库约束

因此对于

team = ForeignKeyField(Team)

采用

team = DeferredForeignKeyField('Team')

然后再

db.create_tables([Player,Team])
Player._schema.create_foreign_key(Player.team)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM