Django - нет такого исключения таблицы

В Django я добавил некоторые модели в models.py. После manage.py makemigrations, manage.py migrate вызывает это исключение:

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

Поэтому я удалил все старые миграции и запустил makemigrations и снова makemigrations migrate которая, казалось, сработала.

К сожалению, я заметил, что это не помогло, потому что, когда я пытаюсь щелкнуть User customer profiles User translator profiles User customer profiles User translator profiles это вызывает исключение:

Окружающая среда:

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/auth_test/usertranslatorprofile/

Django Version: 1.8.7
Python Version: 2.7.10
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'auth_test')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\contrib\admin\options.py" in wrapper
  618.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapped_view
  110.                     response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\contrib\admin\sites.py" in inner
  233.             return view(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapper
  34.             return bound_func(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapped_view
  110.                     response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\utils\decorators.py" in bound_func
  30.                 return func.__get__(self, type(self))(*args2, **kwargs2)
File "C:\Python27\lib\site-packages\django\contrib\admin\options.py" in changelist_view
  1550.                 self.list_max_show_all, self.list_editable, self)
File "C:\Python27\lib\site-packages\django\contrib\admin\views\main.py" in __init__
  82.         self.get_results(request)
File "C:\Python27\lib\site-packages\django\contrib\admin\views\main.py" in get_results
  177.         result_count = paginator.count
File "C:\Python27\lib\site-packages\django\core\paginator.py" in _get_count
  72.                 self._count = self.object_list.count()
File "C:\Python27\lib\site-packages\django\db\models\query.py" in count
  318.         return self.query.get_count(using=self.db)
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in get_count
  466.         number = obj.get_aggregation(using, ['__count'])['__count']
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in get_aggregation
  447.         result = compiler.execute_sql(SINGLE)
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  840.             cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\utils.py" in execute
  79.             return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\utils.py" in execute
  64.                 return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\utils.py" in __exit__
  98.                 six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\Python27\lib\site-packages\django\db\backends\utils.py" in execute
  64.                 return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py" in execute
  318.         return Database.Cursor.execute(self, query, params)

Exception Type: OperationalError at /admin/auth_test/usertranslatorprofile/
Exception Value: no such table: auth_test_usertranslatorprofile

Я прикрепляю свои файлы:

MODELS.PY:

from django.db import models
from django.contrib.auth.models import User

class Language(models.Model):
    shortcut = models.CharField(max_length=6)
    name = models.CharField(max_length=50)
    price_per_sign = models.FloatField()

class UserTranslatorProfile(models.Model):
    user = models.OneToOneField(User)
    languages = models.ManyToManyField(Language)
    price_per_word = models.FloatField()

class UserCustomerProfile(models.Model):
    user = models.OneToOneField(User)

ADMIN.PY:

from django import forms
from .models import Language
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class FreelancerRegistrationForm(forms.Form):
    language = forms.ModelChoiceField(queryset=Language.objects.all().order_by('shortcut'))

Вы знаете, где проблема? благодаря

Ответ 1

Я решил ту же проблему с этими шагами:

  • Удалите свою базу данных (db.sqlite3 в моем случае) в каталоге проекта
  • Удалите все из папки __pycache__ под вашим подкаталогом проекта.
  • Для приложения, которое вы пытаетесь исправить, перейдите в папку и очистите migrations и __pycache__

Когда вы уверены, что вы очистили все вышеуказанные файлы, запустите:

python manage.py makemigrations
python manage.py migrate

Надеюсь, это поможет.

Ответ 2

В другом случае wihch может генерировать такую табличную ошибку. Если ваш view.py или аналогичный выполняет код, который пытается получить доступ к БД при импорте, т.е. Импортирование views.py имеет побочные эффекты, то запуск с нуля не будет работать.

Это происходит, когда ваш код работает с существующей БД, и теперь вы пытаетесь запустить без БД. Просто измените view.py, чтобы он мог быть импортирован без побочных эффектов. Если вы не хотите исправлять дизайн, сделайте следующее:

from django.db.utils import OperationalError
format_list = [('', '(all)')]
geom_type_list = [('', '(all)')]
try:
    format_list.extend([(i[0],i[0]) 
        for i in Format.objects.values_list('name')])
    geom_type_list.extend([(i[0],i[0]) 
        for i in Geom_type.objects.values_list('name')])
except OperationalError:
    pass  # happens when db doesn't exist yet, views.py should be
          # importable without this side effect

Ответ 3

Добавление к ответу terry_brown - вот что вызывает у меня проблемы. У меня была пользовательская модель с ForeignKey для другой модели. И я установил по умолчанию первый объект в БД. Это сработало, когда у меня были данные в базе данных. Но когда я начал с нуля, он не работал, потому что он был выполнен сразу после импорта (так что даже миграция не прошла).

class User(AbstractBaseUser, PermissionsMixin):
    subscription_plan = models.ForeignKey(SubscriptionPlan, default=SubscriptionPlan.objects.first().id)

Я должен был пожертвовать этим default (комментируя его).

ОБНОВЛЕНИЕ: лучшим решением было бы предварительно заполнить вашу базу данных начальной миграцией или фикстурами.

Ответ 4

Запустите команду ниже. Это решает меня однажды эту проблему

manage.py migrate --run-syncdb

Ответ 5

Может быть, вне времени, но... У меня такая же проблема, когда я пытался "клонировать" установку Django 1.11 в другой каталог, а затем с первоначальной попыткой управлять makemigrations.

Я решаю проблему следующим образом:

  1. установка первоначальной установки Django и создание основного приложения:

django-admin.py startproject app_name

  1. начальные миграции управляют макетированиями, управляют миграцией

  2. Настройка суперпользователя:

управлять createuperuser

  1. скопируйте все файлы и каталоги (приложения Django), за исключением urls.py и settings.py в основной каталог

  2. Добавлено все приложения в INSTALLED_APPS

  3. управлять makemigrations, управлять миграцией

  4. Скопированы параметры settings.py и urls.py из каталога каталога Django

Это не ошибки, и все работает нормально.

Petr

Ответ 6

Если у кого-то еще есть эта проблема, и принятое решение не работает, посмотрите на свой путь db, путь db должен быть абсолютным путем, 'NAME': '/pathto-db/default.db',

Ссылка на сайт

Ответ 7

В этом случае некоторые миграции все еще ждут, поэтому запустите python manage.py migrate и python manage.py makemigrations app_name

Ответ 8

Если ваши изменения в моделях данных огромны и имеют совпадения, у вас нет другого выбора, кроме как удалить базу данных.

Ответ 9

Чтобы решить эту проблему, я сделал это (в Ubuntu вам нужно будет адаптировать команды для Windows):

1. Удалите все файлы миграции

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete

find . -path "*/migrations/*.pyc"  -delete

2. Удалить db.sqlite3

rm db.sqlite3

3. Создайте и запустите миграции:

python manage.py makemigrations
python manage.py migrate

4. Синхронизировать базу данных:

manage.py migrate --run-syncdb

Немного боли, так как вам нужно удалить базу данных, но это хорошо для тестовой системы. Получил все, кроме последнего шага от этого вообще отличного ресурса: https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html