Джанго-волшебство не порождает миграцию - PullRequest
0 голосов
/ 23 января 2019

Я играю с библиотекой 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.

Должен ли я куда-нибудь кинуть файл env.py?эта команда на самом деле должна работать?Помощь оценена.

1 Ответ

0 голосов
/ 06 февраля 2019

отсутствующий шаблон был фактически исправлен в последнем выпуске, поэтому рекомендую попробовать.

что касается моделей, которые не подобраны, пара идей, которые могут быть полезны

  • модель должна быть волшебной моделью. в словах заказа это должно подкласс db.Model:
from django_sorcery.db import databases
db = databases.get("default")
class MyModel(db.Model):
    ...
  • модель должна быть определена внутри одной из INSTALLED_APPS. внутреннее колдовство использует get_containing_app_config, чтобы получить соответствующее приложение django для модели, поскольку модель sqlalchemy не зарегистрирована в приложении django

  • по умолчанию больше ничего не требуется, поэтому нет необходимости в традиционном env.py. некоторые основные настройки разрешены в приложениях AppConfig:

    • version_table - по умолчанию alembic_version_{app.label}
    • version_table_schema

    если этого недостаточно, есть пара сигналов , которые можно использовать для подключения к созданию конфигурации alembic для настройки

это должно заставить работать команду миграции. репо поставляется с test_site, который содержит каноническое приложение polls для тестирования. Вы можете поэкспериментировать с ним и миграциями алембов:

$ 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 ###
...

Отказ от ответственности: Я один из тех, кто поддерживает джанго-колдовство. спасибо за попытку! если у вас возникнут какие-либо ошибки, не стесняйтесь открывать вопросы многие вещи еще не очень хорошо документированы, поскольку мы создаем новые функции, но, надеюсь, со временем документы и стабильность улучшатся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...