在`python manage.py migrate`之后,表不显示和迁移不可见

时间:2017-09-08 11:45:25

标签: python django

我正在关注Django的官方教程并在https://docs.djangoproject.com/en/1.11/intro/tutorial02/中运行python manage.py migrate。在此之后,我希望一些文件显示在民意调查/迁移中,但那里只有一个空__init__.py,当我运行sqlite3并输入.tables或{{1没有输出。仍然,.schema命令似乎成功:

python manage.py migrate

这里出了什么问题?

编辑:

$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK 添加了'polls',。然后:

INSTALLED_APPS

同样的问题。

EDIT2:运行$ python manage.py makemigrations Migrations for 'polls': polls/migrations/0001_initial.py - Create model Choice - Create model Question - Add field question to choice (django) Sahands-MacBook-Pro:mysite sahandzarrinkoub$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, polls, sessions Running migrations: Applying polls.0001_initial... OK (django) Sahands-MacBook-Pro:mysite sahandzarrinkoub$ sqlite3 SQLite version 3.16.0 2016-11-04 19:09:39 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> .schema sqlite> 后,python manage.py dbshell.schema最终产生了输出。

2 个答案:

答案 0 :(得分:3)

首先,检查polls中的INSTALLED_APPS列表中是否存在settings.py个应用:

INSTALLED_APPS = [
    # ...
    'polls',
]

然后在执行makemigrations之前尝试运行migrate

$ python manage.py makemigrations
$ python3 manage.py migrate

修改

现在,当您在数据库中创建polls表时,您可以通过运行$ python manage.py dbshell来访问sqlite3客户端:

$ python manage.py dbshell
sqlite> .schema

仅运行sqlite3python manage.py dbshell之间的差异在文档中说明:

  

django-admin dbshell

     

运行ENGINE设置中指定的数据库引擎的命令行客户端,并使用USERPASSWORD等设置中指定的连接参数。

答案 1 :(得分:0)

你可能做错了或者你可能没有。这取决于

  1. 如果您尚未在models.py文件中创建任何模型,并且您已在settings.py INSTALLED_APPS
  2. 中注册了该应用

    在这种情况下,你没有做错任何事。当您创建至少一个模型并且在INSTALLED_APPS

    中注册了您的应用时,Django将在您应用的迁移文件夹中创建迁移
    1. 如果您已创建模型但忘记将应用添加到INSTALLED_APPS
    2. 在这种情况下,您只需将应用的名称添加到INSTALLED_APPS

      希望这有帮助