![](/img/trans.png)
[英]Django - Foreign key referencing one of two tables depending on its content
[英]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()
有人能幫我嗎? :)
你得到這個錯誤,因為你引用Team
中Player
,你定義了前Team
。 您在這里有一個循環依賴性。 Team
取決於Player
而Player
則取決於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.