所以我根据教程创建了一个django项目和应用程序,我拥有MongoDB Engine所需的所有依赖项,所有这些似乎工作正常,花花公子直到我尝试启用管理界面。
我取消注释了需要位,并将'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.
答案 0 :(得分:12)
您可以创建自己的网站,然后获取ID:
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
然后:
python ./manage.py tellsiteid
答案 1 :(得分:12)
如果您不需要sites
功能(非常可能),只需关闭django.contrib.sites
应用,它就会解决与SITE_ID相关的MongoDB问题:
INSTALLED_APPS = (
(...)
# 'django.contrib.sites', # Comment this out
(...)
)
答案 2 :(得分:5)
您尚未创建任何网站。运行manage.py syncdb
创建一个。
答案 3 :(得分:3)
答案 4 :(得分:3)
出于某种原因,这里没有一个解决方案适合我。 python ./manage.py tellsiteid
,没有django_site
集合,评论'django.contrib.sites'
会导致奇怪的错误。
从shell中抓取ID对我有用,详情请点击:
https://gist.github.com/ielshareef/2986459 或者Site matching query does not exist
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'4fe7aa759e654e2662000000'
把它放在settings.py
中,一切都很好!
答案 5 :(得分:2)
我在前几天的安装过程中遇到了这个问题。
基本上你需要将logo添加到mongo shell中并查找你的siteid然后添加你的settings.py
登录mongo shell
mongo
选择你的数据库
use *name*
然后在django_site上执行find()
db.django_site.find()
然后打开您的settings.py并编辑site_ID =“”行(我的下面是
)SITE_ID = u'4f1f82011d41c81e5c00001d'
这应该让你起步并运行
答案 6 :(得分:2)
很可能你还没有创建一个网站,为此你需要运行命令
python manage.py syncdb
这会创建网站,现在您需要在设置文件中添加其site_id。获取站点ID,连接到正在运行的mongodb引擎,然后运行以下命令
use mydatabase --/# or whatever name you have for your database.
db.django_site.find()
你会得到像
这样的东西ObjectId("4f4e968adea3b3b30c00001d")
然后在你的设置文件中,输入
site_id = u'4f4e968adea3b3b30c00001d'
和管理界面应该工作。是吗?
答案 7 :(得分:0)
我使用manage.py syncdb
然后使用manage.py tellsiteid
,但仍显示错误。
我最终通过删除数据库并再次同步来解决它。
希望这可以帮助某人:)
答案 8 :(得分:0)
sudo python manage.py shell
from django.contrib.sites.models import Site
Site().save()
Site.objects.all()[0].id
u'53aa6456984edd0d5e547e03'
将它放在settings.py中 SITE_ID = u&#39; 53aa6456984edd0d5e547e03&#39;