У меня возникли проблемы с Django 1.7, я пытаюсь сохранить пользователя в таблице, но я получаю сообщение об ошибке, что таблица не существует.Django OperationalError: недостающая таблица; миграция не распознает недостающую таблицу
Вот код, я выполнения:
from django.conf import settings
from django.contrib.auth import BACKEND_SESSION_KEY, SESSION_KEY, get_user_model
User = get_user_model()
from django.contrib.sessions.backends.db import SessionStore
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, email, *_, **__):
session_key = create_pre_authenticated_session(email)
self.stdout.write(session_key)
def create_pre_authenticated_session(email):
user = User.objects.create(email=email)
session = SessionStore()
session[SESSION_KEY] = user.pk
session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
session.save()
return session.session_key
Однако в
user = User.objects.create(email=email)
Я получаю Error сообщение:
django.db.utils.OperationalError: no such table: accounts_user
Вот модель пользователя на accounts/models.py, который я пытаюсь использовать для построения таблицы:
from django.db import models
from django.utils import timezone
class User(models.Model):
email = models.EmailField(primary_key=True)
last_login = models.DateTimeField(default=timezone.now)
REQUIRED_FIELDS =()
USERNAME_FIELD = 'email'
def is_authenticated(self):
return True
Я бежал sqlmigrate против этой миграции с 'manage.py accounts 0001.initial'
и я получил правильный создать таблицу SQL назад, но работает 'manage.py migrate'
дает мне следующее:
Operations to perform:
Apply all migrations: sessions, admin, lists, contenttypes, accounts, auth
Running migrations:
No migrations to apply.
миграция просто результат запуска «makemigration» из оболочки, без специального кода. Я вижу учетные записи, перечисленные в включенных приложениях, но миграция не выполняется, поэтому мой сайт находится в нечетном месте, где Django говорит, что таблица отсутствует, когда я пытаюсь ее использовать, но Django говорит, что существует, когда я пытаюсь выполните миграцию, чтобы создать ее.
Почему Django ошибочно полагает, что таблица уже существует, когда я могу посмотреть на базу данных и видеть, что это не так?
Попробуйте запустить 'python manage.py makemigrations -app-name' перед запуском' python manage.py migrate' // или проверить, что вы подделали предыдущий процесс 'migrate' – ruddra
. Управляемая дизайнерская книга Гарри Персивала? Я столкнулся с той же проблемой. Мы, должно быть, что-то пропустили. – ericso
Эрик: Я выяснил решение, которое сработало для меня. Оказывается, я не пропустил ни одного шага, но место, где он размещает свой файл sql, отличается от того, где Django создает его. Базовый sqlite-файл Django находится под src/db.sqlite3. Однако, если вы посмотрите под src/superlists/db.sqlite3, вы обнаружите, что другой файл sqlite был создан в соответствии с путём, заданным параметрами BASE_DIR. Я подозреваю, что расхождение является результатом книги, используя более раннюю версию Django. – user856358