Django: отношение "django_site" не существует
Я запускаю тестовый сервер django на aws, и я только что установил django-userena, и когда я пытаюсь зарегистрироваться после нажатия кнопки "Отправить", я получаю следующее сообщение:
отношение "django_site" не существует ЛИНИЯ 1: ..."django_site"."domain", "django_site"."name" FROM "django_si...
Я не совсем уверен, что здесь пошло не так. Я сделал некоторые исследования и добавил " 'django.contrib.sites',"
к моим установленным приложениям, но я все еще получаю ошибку. Я сделаю еще один шаг, который мне не хватает. Любые предложения или советы?
15 ответов
Я недавно столкнулся с этой проблемой (Django 1.8.7) даже с SITE_ID = 1
в моих настройках. Я должен был вручную перенести sites
приложение перед любой другой миграцией:
./manage.py migrate sites
./manage.py migrate
Возможно, вы вызываете объект сайта перед созданием модели сайта (перед синхронизацией или миграцией)
например: site = Site.objects.get(id=settings.SITE_ID)
У меня та же проблема, и я исправил это так:
- добавлять
SITE_ID=1
вsettings.py
запустите эту команду:
python manage.py migrate
Я получил эту ошибку при работе с django-cookiecutter
, django-allauth
а также django-rest-auth
Я буквально 5 часов выдергивал волосы. В конце концов сдался и начал по крупицам комментировать
Что сработало для меня, так это комментирование обоих предварительно настроенных URL-адресов (они поставляются с cookiecutter Django):
# User management
path("users/", include("yourapp.users.urls")),
path("accounts/", include("allauth.urls")),
После этого миграции работали.
Я раскомментировал его, и с тех пор мое приложение работает. Это было только для начальной миграции
Надеюсь, это кому-то поможет!
Если вы получаете эту ошибку при развертывании приложения django на Heroku, убедитесь, что вы выполнили:
heroku run python manage.py migrate
Это сработало для меня
Я собираюсь оставить это здесь на будущее:
python manage.py makemigrations allauth
Это сработало для меня, я забыл почему, мне потребовалось слишком много времени, чтобы понять, как я исправил это в первый раз
Изменить: makemigrations иногда не создает сторонние вещи, такие как allauth, которые используют некоторые из моих проектов, поэтому я должен указать эти
Ужасный код привел к этой ошибке для меня. У меня была глобальная переменная, чтобы получить текущий сайт
SITE = Site.objects.get(pk=1)
это было оценено во время миграции и привело к ошибке.
У меня возникла та же проблема при создании новой пустой базы данных для моего проекта (в котором используется цинния).
Выполнение команды "управлять переносом сайта" перед "управлением миграцией" ничего не решило. Кажется, что весь проект был загружен до того, как было выполнено создание таблицы.
Я решил выявить ошибки, возникающие при импорте приложения, выпущенного zinnia.
например: в urls.py приложения
urlpatterns = None
app_name = 'something'
try:
from .views import MyEntryCreate
urlpatterns = [
url(r'^blogentry/create/$',
login_required(MyEntryCreate.as_view()),
name='zinnia_entry-add'),
]
except Exception as e:
logger.error(app_name+" Error urls: "+str(e))
urlpatterns = []
Пришлось сделать что-то подобное в другом месте этого приложения, и "управление миграцией" снова сработало.
Мне нужно было зайти в админ-панель и найти группу "сайты", а затем изменить имя домена и имя сайта на ip своего сервера для моего тестового сервера.
Я столкнулся с той же проблемой сегодня после того, как отправил свой код на heroku... Итак, я понял, что должен перенести свои сайты перед любой другой миграцией.
heroku run python manage.py migrate sites
heroku run python manage.py migrate
Эта проблема может быть вызвана одним из приложений, которые вы используете. Если вы внимательно проверите трассировку, вы уже можете найти правонарушителя.
У меня были эти проблемы, используя django-debug-toolbar
а также zinnia
,
Если вы используете django-debug-toolbar
это может быть решением:
Попробуйте выполнить следующие шаги для явной настройки: http://django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html
Альтернативно удалить debug_toolbar
от твоего INSTALLED APPS
,
Если это не помогает или если другое приложение вызывает проблему, попробуйте временно удалить все импортированные файлы (например, установленное приложение, URL-адреса, настраиваемые представления, настройки), которые отображаются в трассировке.
Я опоздал, но столкнулся с той же проблемой с django v 1.11.
Проблема заключалась в том, что я перестраивал модель вне обычного def() и в форме () [я использую модели для выбора] В трассировке должен быть указан файл.py
например
File "filepath/views.py", line 67, in <module>
some_variable = some_model.objects.get(name ='name')
Поэтому я должен был закомментировать это, чтобы восстановить мои миграции
Публикую это на случай, если кто-то столкнется с этой проблемой, и ни один из приведенных выше ответов не сработал.
Это дополнение к одному из решений, которое может или не может решить вашу проблему:
Решение: убедитесь, что вы сначала выполняете команду migrate, прежде чем что-либо еще!
Так что в обычном случае вы загружаете свой код в облако, которым может быть AWS. Вы делаете обычные команды docker-compose правильно, сначала вы должны сделать то же самое, что и следующее:
Выполните следующие действия:docker-compose -f production.yml build
затемdocker-compose -f production.yml run --rm django python manage.py migrate
И затем после этого вы можете запустить экземпляр докера черезdocker-compose -f production.yml up
илиdocker-compose -f production.yml up -d
(поищите в гугле, что это значит)
--
Если вы уже запускали экземпляр перед миграцией, просто остановите запущенный экземпляр докера и удалите его. Я нашел удобный учебник по командам докеров: https://www.thegeekdiary.com/how-to-list-start-stop-delete-docker-containers/
Я просто перезагрузил компьютер, и проблема исчезла :)(перезапуска docker-compose недостаточно).
это в основном ошибка базы данных, я могу исправить это на этот раз, существует ли база данных? почему я не знаю, если вы знаете, пожалуйста, найдите и удалите его
Site.objects.get_current()
прокомментируйте это, если знаете, и после того, как вы запустите
./manage.py migrate
[шаг:2] Я скажу, что он уже существует. так я и сделал
./manage.py migrate --fake
[шаг 3]
[шаг 1]
su postgres
psql -U <username> -d <database>
SELECT * FROM django_site;
CREATE TABLE django_site(
id serial PRIMARY KEY,domain VARCHAR (50) NULL,
name VARCHAR (50) NULL);
INSERT INTO django_site VALUES('1','mysite.com', 'mysite');
\q
после того, как вы измените значение mysite.com из интерфейса администратора.