[英]Peewee created new a entry successfully but lost the foreign-key value from select() query
[英]null value in foreign key field of sqlite table created from peewee
我在 python 中使用 peewee 作為 sqlite 的 orm,我創建了一個帶有外鍵字段的表,它必須接受空值,但它不會這樣做 - 我總是收到錯誤:“提交數據時發生錯誤:外鍵約束失敗的”
這里是 peewee 模型 (BaseModel) 的 python 代碼——如您所見,相關字段“klasse”設置為“null=True”,但不接受空值:
class Lerngruppe(BaseModel):
bezeichner = TextField(primary_key=True)
# somtimes no group of pupils available (=> null=True)
klasse = ForeignKeyField(
Klasse, column_name="klasse_id", null=True)
fach = ForeignKeyField(
Fach, column_name="fach_id", null=False)
lehrkraft = ForeignKeyField(
Lehrkraft, column_name="lehrkraft_id", null=False)
von = DateField(null=True)
bis = DateField(null=True)
peewee 然后創建以下 sqlite 表 (sqlite-DDL):
CREATE TABLE lerngruppe (
bezeichner TEXT NOT NULL
PRIMARY KEY,
klasse_id TEXT,
fach_id VARCHAR (7) NOT NULL,
lehrkraft_id VARCHAR (5) NOT NULL,
von DATE,
bis DATE,
notiz TEXT,
FOREIGN KEY (
klasse_id
)
REFERENCES klasse (bezeichner),
FOREIGN KEY (
fach_id
)
REFERENCES fach (kuerzel),
FOREIGN KEY (
lehrkraft_id
)
REFERENCES lehrkraft (kuerzel)
);
外鍵指向對應的peewee模型(BaseModel)“Klasse”:
class Klasse(BaseModel):
# target of the foreignkey
bezeichner = TextField(primary_key=True)
stammraum = ForeignKeyField(
Raum, column_name="stammraum_id", null=True)
klassenleitung = ForeignKeyField(
Lehrkraft, column_name="klalei_id", null=True)
coklassenleitung = ForeignKeyField(
Lehrkraft, column_name="coklalei_id", null=True)
這個模型定義的 DDL 是:
CREATE TABLE klasse (
bezeichner TEXT NOT NULL
PRIMARY KEY,
stammraum_id VARCHAR (255),
klalei_id VARCHAR (5),
coklalei_id VARCHAR (5),
FOREIGN KEY (
stammraum_id
)
REFERENCES raum (name),
FOREIGN KEY (
klalei_id
)
REFERENCES lehrkraft (kuerzel),
FOREIGN KEY (
coklalei_id
)
REFERENCES lehrkraft (kuerzel)
);
有什么幫助嗎?
從您的問題中不清楚錯誤發生在哪里。 需要檢查的幾件事:
你能分享代碼來重現這個問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.