运行tellsiteid时出现Django MongoDB Engine错误

标签 django mongodb pymongo django-nonrel

所以我按照教程创建了一个 django 项目和应用程序,并且我拥有 MongoDB 引擎所需的所有依赖项,在我尝试启用管理界面之前,它似乎一切正常且花花公子。

我取消了对必需位的注释,并将“django_mongodb_engine”和“djangotoolbox”添加到 settings.py 中的应用程序部分

当我尝试进入 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.

最佳答案

您可以创建您的网站,然后获取 id:

python ./manage.py shell

>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()

然后:

python ./manage.py tellsiteid

关于运行tellsiteid时出现Django MongoDB Engine错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819456/

相关文章:

python - 理解 Django 的 urlconf

django - 是否可以在 Mezzanine/Cartridge 网站上使用 Bootstrap 主题?

python - PyMongo 和 Flask 的 Jsonify 包含转义斜杠

java - 为什么开始发生此异常 - java.lang.ClassCastException : java. lang.String 无法转换为 com.mongodb.DBObject

mongodb - pymongo 无法连接到主节点

python - 如何修复 "Page not found (404)"错误 ("Django tried these URL patterns... The empty path didn' t 与其中任何一个匹配。”)

python - RabbitMQ 或 Redis 使用 Django 2.0 扩展 Celery 队列

python - 如何使用 Azure 函数中的 pymongo 连接到 Cosmos DB

MongoDB:更新子文档

mongodb - 使用 mongoengine 连接到 MongoDB atlas 集群