我已经查过了,这里没有问题。我在迁移中定义了一些表,比如-
from playhouse.migrate import *
db = MySQLDatabase('mydb', 'root', 'password', 'localhost', 3306)
migrator = MySQLMigrator(db)
id_field = IntegerField(null=False, unique=True, index=True, primary_key=True)
fk_field = IntegerField(null=False)
with db.atomic():
migrate(
migrator.add_column('my_table', 'id', id_field)
)
with db.atomic():
migrate(
migrator.add_column('my_table1', 'id', id_field)
migrator.add_column('my_table1', 'table_id', fk_field) # this needs to be marked as a foreign key constraint somehow?
)
然而,文档使得如何在迁移中指定外键约束变得非常不清楚。一个ForeignKeyField似乎需要一个我没有的模型。在
有没有办法在迁移中指定table_id
是与my_table
id字段相关的外键?您可以使用标准SQL中的FOREIGN KEY table_id REFERENCES my_table(id)
来实现这一点。在
我不知所措,我准备放弃我的SQL迁移,因为peewee的文档并没有真正说明这一点。我没有使用Django-我只是把peewee和我的一些脚本捆绑在一起。在
我能做些什么来弥补这个问题,让迁移完全定义我的模型?在
如果您试图将外键添加到您没有的模型中,有几种方法。您可以创建一个存根模型作为外键目标的占位符,然后用
ForeignKeyField
调用add_column()
。或者您可以在IntegerField()
中显式指定一个约束列表:相关问题 更多 >
编程相关推荐