- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在两个模型之间建立了多对多关系,User
和 Role
,通过中间表 UserRoleThrough
实现,它有两个 ForeignKeyField
:一个引用 User
,另一个引用 Role
。据我从文档中了解到,ON DELETE通过使用 on_delete
参数初始化 ForeignKeyField
来支持功能。虽然不是很清楚 on_delete
可以取什么值,documentation举个例子,例如“级联”
。这就是说,on_delete='CASCADE'
似乎没有效果,因为尝试从其中一个父表中删除一行会引发错误。
peewee.IntegrityError: FOREIGN KEY constraint failed
使用数据库浏览器检查生成的模式显示外键未使用 ON DELETE 声明。
CREATE TABLE "userrolethrough" (
"id" INTEGER NOT NULL PRIMARY KEY,
"user_id" INTEGER NOT NULL,
"role_id" INTEGER NOT NULL,
FOREIGN KEY ("user_id") REFERENCES "user" ("id"),
FOREIGN KEY ("role_id") REFERENCES "role" ("id")
)
那么我这里做错了什么?如何让 on_delete
工作?这是使用 Python 3.6 和 Peewee 3.0.2 的最小可重现示例。
import peewee
db_proxy = peewee.Proxy()
class BaseModel(peewee.Model):
class Meta:
database = db_proxy
class User(BaseModel):
name = peewee.CharField()
class Role(BaseModel):
name = peewee.CharField()
class UserRoleThrough(BaseModel):
user = peewee.ForeignKeyField(User, on_delete='CASCADE')
role = peewee.ForeignKeyField(Role, on_delete='CASCADE')
if __name__ == '__main__':
db = peewee.SqliteDatabase('test.db')
db.pragma('foreign_keys', 1, permanent=True)
db_proxy.initialize(db)
tables = [
User,
Role,
UserRoleThrough
]
db.create_tables(tables)
isaac = User.create(name='Isaac')
admin = Role.create(name='Admin')
UserRoleThrough.create(user=isaac, role=admin)
User.delete().execute()
最佳答案
这在 3.0.6 中已修复:github.com/coleifer/peewee/blob/master/CHANGELOG.md#306
关于python - on_delete ='CASCADE' 好像没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48776346/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!