Django-sorcery 没有自动生成迁移

2024-09-19 22:45:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩django-sorcery库,我一直在尝试生成一些迁移:

django-admin sorcery revision -m "Second revision" --autogenerate -v 1 my_app

当我第一次运行命令时,我看到一条错误消息:

FileNotFoundError: [Errno 2] No such file or directory: [... snip ...]python3.7/site-packages/django_sorcery/db/alembic/script.py.mako

不确定为什么pip包中缺少模板,我手工添加了它。你知道吗

现在,尽管我指定了--autogenerate标志,但该命令只生成空的迁移文件。你知道吗

我应该扔一个环境py在什么地方存档?这个命令真的应该起作用了吗?谢谢你的帮助。你知道吗


Tags: djangonopy命令app消息adminmy
1条回答
网友
1楼 · 发布于 2024-09-19 22:45:57

缺少的模板实际上在最近的一个版本中得到了解决,所以我们建议尝试一下。你知道吗

至于那些没有被接受的模型,有几个想法可能是有用的

  • 模型必须是分类模型。按照单词的顺序,它需要子类db.Model
from django_sorcery.db import databases
db = databases.get("default")
class MyModel(db.Model):
    ...
  • 模型需要在INSTALLED_APPS中定义。内部巫术使用^{}为模型获取相应的django应用程序,因为sqlalchemy模型不是在django应用程序中本机注册的

  • 默认情况下,不需要其他任何东西,因此不需要传统的env.py。应用程序AppConfig中允许一些基本的自定义:

    • version_table-默认为alembic_version_{app.label}
    • version_table_schema

    如果不够的话,有几个signals可以用来连接到alembic配置创建中进行定制

这将使迁移命令起作用。repo附带了一个^{},其中包含一个用于测试的规范polls应用程序。您可以尝试it和alembic迁移:

$ cd test_site
$ ./manage.py sorcery revision -m 'initial migration' -r 0001  autogenerate polls
$ cat polls/migrations/0001_initial_migration.py
...
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('question',
    sa.Column('pk', sa.Integer(), autoincrement=True, nullable=False),
    sa.Column('question_text', sa.String(length=200), nullable=True),
    sa.Column('pub_date', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('pk')
    )
    op.create_table('choice',
    sa.Column('pk', sa.Integer(), autoincrement=True, nullable=False),
    sa.Column('choice_text', sa.String(length=200), nullable=True),
    sa.Column('votes', sa.Integer(), nullable=True),
    sa.Column('question_pk', sa.Integer(), nullable=True),
    sa.ForeignKeyConstraint(['question_pk'], ['question.pk'], ),
    sa.PrimaryKeyConstraint('pk')
    )
    # ### end Alembic commands ###
...

免责声明:我是django魔法的维护者之一。谢谢你的尝试!如果您遇到任何错误,请随时打开问题。很多东西还没有很好的文档化,因为我们正在构建特性,但希望随着时间的推移,文档和稳定性会得到改善。你知道吗

相关问题 更多 >