我試圖創建與數據庫中的外鍵與peewee表。
球員表具有ForeignKey到Team表和Team表具有ForeignKey到Player表。當我運行我的代碼我得到 NameError: name 'Team' is not defined
這裏是我的代碼:兩個表的外鍵引用其他,NameError
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()
有人能幫助我嗎? :)
我不知道peewee只有SQL,但你不能設置FK到「類」 /表在SQL中不存在。我想在這裏是一樣的。您可以嘗試在創建這兩個類後添加FK。除此之外,您可以在Team'Player類中獲得3個屬性:玩家,團隊和隊長。所以你避免穿越FKs – bish
感謝您的快速回答! setattr(Team,「隊長」,ForeignKeyField(Player)),'setattr(Player,「team」,ForeignKeyField(Team))'修復了這個問題:) – KsaneK
這種方法實際上不會很好,因爲某些鉤子在元類/模型類創建期間運行。如果你想動態添加一個字段,你應該調用「field.add_to_class(model_class,field_name)」。這將負責正確設置屬性並運行掛鉤。 *最佳/正確答案*,但是,在下面的答案部分列出。 – coleifer