我有一个查询应该创建一个许可证实例,其中一部分看起来像:
license_obj = license_db.License()
license_db.Session.add(license_obj)
license_obj.start_date = license['start_date']
license_obj.expiry_date = license['expiry_date']
我还添加了license_status关系和license_status_id,它指向LicenseStatus模型
当我尝试绑定license_status_id的默认值时,如下所示:
license_db.license_status_id = int(license_db.LicenseStatus.active().id)
然后我收到一个错误:
"Can't update table "
FlushError: Can't update table using NULL for primary key value
但是当我尝试手动分配整数时,如下所示,那么它可以工作:
license_db.license_status_id = 1
造成问题的原因是什么?
如果我打印license_db.LicenseStatus.active()。id,那么我得到int等于1,这就是我想要实现的目标。
答案 0 :(得分:2)
在设置许可结束日期而不是第二行后尝试添加license_db.session
。
答案 1 :(得分:0)
实际上这个错误很容易引起误解。 我得到了这个,事实证明问题是标记为另一个表的外键的列之一是null。不是标记为主键的那个,它只是一个外键。