Ошибка двигателя Django MongoDB при запуске ellsiteid
-
27-10-2019 - |
Вопрос
Поэтому я создал проект Django и приложение в соответствии с учебником, и у меня есть все зависимости, необходимые для двигателя MongoDB, все, казалось, работало нормально, и Dandy, пока я не попытался включить интерфейс администратора.
Я расстроил необходимые биты и добавил в раздел «django_mongodb_engine» и «djangotoolbox» в раздел «Приложения».
Когда я пытаюсь попасть в Localhost: 8000/Admin, я получаю ошибку:
«Значения AutoField (первичный ключ по умолчанию) должны быть строками, представляющими ObjectId на MongoDB (вместо этого получил U'1 '). Убедитесь, что ваш сайт_ид содержит действительную строку ObjectId».
После того, как какой -то Googling, по -видимому, мне придется запустить Mange.py ellysiteid, и он выплюнет мне идентификатор, который я могу использовать в моих настройках.
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site- packages/django/core/management/__init__.py", line 438, in execute_manager utility.execute()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 8, in handle_noargs
site_id = self._get_site_id()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 19, in _get_site_id
return Site.objects.get().id
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/db/models/manager.py", line 132, in get
return self.get_query_set().get(*args, **kwargs)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/db/models/query.py", line 351, in get
% self.model._meta.object_name)
django.contrib.sites.models.DoesNotExist: Site matching query does not exist.
Решение
Вы еще не создали ни одного сайта. Бежать manage.py syncdb
создать один.
Другие советы
Вы можете создать свой сайт, а затем получить идентификатор:
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
а потом:
python ./manage.py tellsiteid
Если вам не нужно sites
функциональность (что очень вероятно) просто выключите django.contrib.sites
приложение и это исправят проблемы MongoDB, связанные с Site_id:
INSTALLED_APPS = (
(...)
# 'django.contrib.sites', # Comment this out
(...)
)
Вы пробовали это: http://django-mongodb.org/troubleshooting.html#site-id-issues
По какой -то причине ни одно из решений здесь не работало для меня. python ./manage.py tellsiteid
, не было django_site
сбор и комментирование 'django.contrib.sites'
вызвали странные ошибки.
Захватывая идентификатор с оболочки, сработал для меня, хотя подробно здесь:
https://gist.github.com/ielshareef/2986459или здесь Запрос соответствия сайта не существует
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'4fe7aa759e654e2662000000'
Поместите это settings.py
И все сработало отлично!
Я столкнулся с этим во время моей настройки на днях.
В основном вам нужно логотип в оболочку Mongo и поиск вашего сайта, а затем добавьте его настройки.
Войти в оболочку монго
mongo
Выберите свой DB
use *name*
затем сделайте наводка () на django_site
db.django_site.find()
Затем откройте настройки.
SITE_ID = u'4f1f82011d41c81e5c00001d'
Это должно вас поднять
Скорее всего, вы еще не создали сайт, чтобы сделать это, вам нужно запустить команду
python manage.py syncdb
Это создает сайт, теперь вам нужно добавить его сайт_ид в файл настроек. Получите идентификатор сайта, подключитесь к двигателю MongoDB, который работает, и запустите следующие команды
use mydatabase --/# or whatever name you have for your database.
db.django_site.find()
Вы получите что -то вроде
ObjectId("4f4e968adea3b3b30c00001d")
Затем в вашем файле настроек положите
site_id = u'4f4e968adea3b3b30c00001d'
и интерфейс администратора должен работать. Имеет ли это?
я использую manage.py syncdb
а потом manage.py tellsiteid
но все еще отображайте ошибку.
Я, наконец, решаю его, сбросив базу данных и снова синхронизируя.
Надеюсь, это может кому -то помочь :)
Sudo Python Manage.py Shell
from django.contrib.sites.models import Site
Site().save()
Site.objects.all()[0].id
u'53aa6456984edd0d5e547e03'
Поместите его в настройки.