Django успешных миграций, но Sqlite db не удалось - PullRequest
1 голос
/ 25 февраля 2020

просто вопрос относительно миграции в Django с SQlite3:

Я создал несколько моделей в своем проекте Django, следуя приведенной ниже архитектуре:

    EP_project
    │   db.sqlite3
    │   manage.py
    │
    ├───ep
    │   │   admin.py
    │   │   apps.py
    │   │   models.py
    │   │   tests.py
    │   │   urls.py
    │   │   views.py
    │   │   __init__.py
    │   │
    │   ├───migrations
    │   │   │   0001_initial.py
    │   │   │   __init__.py
    │   │   │
    │   │   └───__pycache__
    │   │           0001_initial.cpython-38.pyc
    │   │           0002_address.cpython-38.pyc
    │   │           __init__.cpython-38.pyc
    │   │
    │   ├───models
    │   │   │   model_address.py
    │   │   │   model_ap.py
    │   │   │   model_as.py
    │   │   │   model_at.py
    │   │   │   model_user.py
    │   │   │   __init__.py
    │   │   │
    │   │   └───__pycache__
    │   │           model_address.cpython-38.pyc
    │   │           model_ap.cpython-38.pyc
    │   │           model_as.cpython-38.pyc
    │   │           model_at.cpython-38.pyc
    │   │           model_user.cpython-38.pyc
    │   │           __init__.cpython-38.pyc
    │   │
    │   ├───tests
    │   │       test_user.py
    │   │
    │   └───__pycache__
    │           admin.cpython-38.pyc
    │           apps.cpython-38.pyc
    │           tests.cpython-38.pyc
    │           urls.cpython-38.pyc
    │           views.cpython-38.pyc
    │           __init__.cpython-38.pyc
    │
    ├───ep_project
    │   │   asgi.py
    │   │   settings.py
    │   │   urls.py
    │   │   wsgi.py
    │   │   __init__.py
    │   │
    │   └───__pycache__
    │           settings.cpython-38.pyc
    │           urls.cpython-38.pyc
    │           wsgi.cpython-38.pyc
    │           __init__.cpython-38.pyc
    │
    └───media
        └───ad_pics
                default.jpg

Проблема в том, что, когда я делаю мои миграции, кажется, что миграции выполняются правильно в соответствии с сообщениями терминала.

И мой 0001_initial.py выглядит так:

from django.db import migrations, models
import django.db.models.deletion
import django_countries.fields


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='AP',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
                ('image', models.ImageField(default='default.jpg', upload_to='art_piece_pics')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.User')),
            ],
        ),
        migrations.CreateModel(
            name='User',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('first_name', models.CharField(max_length=200)),
                ('last_name', models.CharField(max_length=200)),
                ('email', models.CharField(max_length=200, unique=True)),
                ('age', models.IntegerField()),
                ('nationality', django_countries.fields.CountryField(max_length=2)),
                ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1)),
                ('profession', models.CharField(choices=[('O', 'Owl'), ('A', 'Alf')], max_length=1)),
            ],
        ),
        migrations.CreateModel(
            name='AT',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('speciality', models.CharField(max_length=200)),
                ('ap', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.AP')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.User')),
            ],
        ),
        migrations.CreateModel(
            name='AS',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('style', models.CharField(max_length=200)),
                ('ap', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.AP')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.User')),
            ],
        ),
        migrations.CreateModel(
            name='Address',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('country', django_countries.fields.CountryField(max_length=2)),
                ('city', models.CharField(max_length=200)),
                ('street', models.CharField(max_length=200)),
                ('street_number', models.IntegerField()),
                ('zip_code', models.IntegerField()),
                ('floor', models.IntegerField()),
                ('flat', models.CharField(max_length=200)),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ep.User')),
            ],
        ),
    ]

И когда я создаю некоторые модели в оболочке работают нормально:

>>> from ep.models.model_user import User
>>> from ep.models.model_ap import AP
>>> user1 = User.objects.first()
>>> user1
<User: Maxence kjhug>
>>> ap1 = AP(user=user1, name="kijhugj", image='default.jpg')
>>> ap1.user
<User: Maxence kjhug>

Но как только я пытаюсь сохранить некоторые модели, он говорит мне, что некоторых таблиц не существует. Вот некоторые сообщения об ошибках:

django.db.utils.OperationalError: no such table: ep_ap

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

Operations to perform:
  Synchronize unmigrated apps: django_countries, messages, staticfiles
  Apply all migrations: admin, auth, contenttypes, ep, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  No migrations to apply.

Я также смотрел на это здесь , но ничего также.

Что я пропускаю или делаю неправильно? Кто-нибудь может мне помочь? Спасибо.

ОБНОВЛЕНО:

Я использовал три команды миграции:

python manage.py makemigrations ep
python manage.py sqlmigrate ep 0001
python manage.py migrate

ОБНОВЛЕНО 2:

А вот мой INSTALLED_APPS в settings.py:

INSTALLED_APPS = [
    'ep.apps.EpConfig',
    'django_countries',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

ОБНОВЛЕНО 3:

Вот выход, следующий python manage.py showmigrations:

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
ep
 [X] 0001_initial
sessions
 [X] 0001_initial
...