hol*_*fix 6 django mongodb pymongo django-nonrel
所以我根据教程创建了一个django项目和应用程序,我拥有MongoDB引擎所需的所有依赖项,所有这些似乎都工作正常,花花公子直到我尝试启用管理界面.
我取消注释了需求位,并将"django_mongodb_engine"和"djangotoolbox"添加到settings.py中的apps部分
当我尝试进入localhost:8000/admin时出现错误:
"AutoField(默认主键)值必须是表示MongoDB上的ObjectId的字符串(取而代之的是u'1'.请确保您的SITE_ID包含有效的ObjectId字符串."
经过一些谷歌搜索显然我必须运行manage.py tellsiteid并且它会向我吐出我可以在我的settings.py中使用的ID,这将使错误消失,但是当我尝试运行manage.py tellsiteid时,我得到:
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.
Run Code Online (Sandbox Code Playgroud)
小智 12
您可以创建您的网站,然后获取ID:
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
Run Code Online (Sandbox Code Playgroud)
然后:
python ./manage.py tellsiteid
Run Code Online (Sandbox Code Playgroud)
Mar*_*mro 12
如果您不需要该sites功能(非常可能),只需关闭django.contrib.sites应用程序,它将解决与SITE_ID相关的MongoDB问题:
INSTALLED_APPS = (
(...)
# 'django.contrib.sites', # Comment this out
(...)
)
Run Code Online (Sandbox Code Playgroud)
小智 5
您尚未创建任何网站.运行manage.py syncdb以创建一个.