Вопрос

Поэтому я создал проект 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
    (...)
)

По какой -то причине ни одно из решений здесь не работало для меня. 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'

Поместите его в настройки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top