просто вопрос относительно миграции в 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