Als ich mit Django Webentwicklung betrieben habe, hat der Migrationsfehler eine Weile gedauert, daher werde ich die Details meines Umgangs damit belassen.
Mac Catalina 10.15.6 Python 3.7 PostgreSQL 10.14 Django 2.2.2
Migration makemigrations $ python manage.py makemigrations django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database 'default' Der Fehler scheint aufzutreten, wenn Sie "python manage.py makemigrations" sogar einmal ausführen, bevor Sie das CustomUser-Modell anwenden ...
migrate $ python manage.py migrate RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. Natürlich hat "migrieren" auch nicht funktioniert.
$ python manage.py showmigrations
Wenn Sie dabei eine Fehlermeldung erhalten, bedeutet dies, dass Sie überhaupt nicht migrieren konnten.
Löschen Sie zunächst alle Dateien außer "__init __. Py" direkt unter "Migrationen" jeder Anwendung.
Kommentieren Sie dann den Teil "'django.contrib.admin "oben in INSTALLED_APPS in settings.py aus.
#***** settings.py ********
$ INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts'
]
AUTH_USER_MODEL = 'accounts.CustomUser'
Kommentieren Sie außerdem den Admin-Teil von "urlpatterns" in "urls.py" aus.
#***** urls.py *******
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
urlpatterns = [
# path('admin/', admin.site.urls),
]
Lassen Sie uns jetzt einmal "migrieren". Hoffentlich geht es vorbei.
Löschen Sie wie bei [Aktion 1](## Aktion 1) alle Dateien außer "__init __. Py" direkt unter "Migrationen" jeder Anwendung.
Tatsächlich konnte ich den Fehler mit [Aktion 1](## Aktion 1) nicht beheben, daher gelang es mir, Migrationen durchzuführen und zu migrieren, indem ich die Datenbank auf diese Weise neu erstellte.
Hier wird postgresql @ 10
verwendet.
$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access
| privileges
---------------+---------+----------+-------------+-------------+---------
postgres | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
app_name | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki +
| | | | | kanzaki=CTc/
| | | | | kanzaki
template1 | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki +
| | | | | kanzaki=CTc/
| | | | | kanzaki
(4 rows)
$ dropdb app_name
$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access
| privileges
---------------+---------+----------+-------------+-------------+---------
postgres | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki +
| | | | | kanzaki=CTc/
| | | | | kanzaki
template1 | kanzaki | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki +
| | | | | kanzaki=CTc/
| | | | | kanzaki
(3 rows)
$ brew services start postgresql@10
$ create app_name
makemigrations & migrate $ python manage.py migrate Operations to perform: Apply all migrations: account, accounts, admin, auth, contenttypes, diary, sessions, sites Running migrations: Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... 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 auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying accounts.0001_initial... OK Applying account.0001_initial... OK Applying account.0002_email_max_length... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying diary.0001_initial... OK Applying sessions.0001_initial... OK Applying sites.0001_initial... OK Applying sites.0002_alter_domain_unique... OK Warst du erfolgreich?
Dieses Mal habe ich einen Teil des Artikels zusammengefasst, mit dem ich mich bei der Entwicklung des Web mit Django wirklich beschäftigt habe. Ich konnte migrieren, indem ich die Datenbank neu erstellte, aber ich habe sie geschrieben, weil es nicht viele Artikel gab, die diese Methode zeigten. Ich wollte Sie wissen lassen, dass diese Methode auch gelöst werden kann.
Django verwendet immer das CustomUser-Modell! Diskussion Was tun, wenn die Migration des benutzerdefinierten Django-Benutzers fehlschlägt?
Recommended Posts