簡體   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