我目前在我的Mac OS X 10.6.8上安装了django-mongodb-engine 0.4.0版本,并且在导入"编译器"模块时奇怪地遇到了一个有趣的错误:
>> from django_mongodb_engine import compiler
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ImportError Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_extensions/management/commands/shell_plus.pyc in <module>()
----> 1 from django_mongodb_engine import compiler
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_mongodb_engine/compiler.pyc in <module>()
15 from pymongo.errors import PyMongoError
16 from pymongo import ASCENDING, DESCENDING
---> 17 from pymongo.objectid import ObjectId, InvalidId
18
19 from djangotoolbox.db.basecompiler import NonrelQuery, NonrelCompiler, \
ImportError: No module named objectid
Run Code Online (Sandbox Code Playgroud)
我通过pip命令安装了包,并且已经安装了所有依赖项,如pymongo,djangotoolbox.我使用的pip命令是这样的:
>> sudo env ARCHFLAGS='-arch i386 -arch x86_64' pip …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的python django应用程序安装mongodb_engine,但是我收到此错误
Cannot find command 'git'
Run Code Online (Sandbox Code Playgroud)
我正在尝试从mongodb文档中获取此命令.http://django-mongodb-engine.readthedocs.org/en/latest/topics/setup.html
pip install git+https://github.com/django-nonrel/django@nonrel-1.5
Run Code Online (Sandbox Code Playgroud)
我相信这里的git导致问题,因为项目存储在git repo中.有没有办法安装git来运行这个pip命令?我试过多个来源,但无法让它工作.
我无法正常运行django mongo引擎.
我在settings.py中的数据库条目是
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'local',
}
}
Run Code Online (Sandbox Code Playgroud)
我的pip冻结结果是
Django==1.8.2
django-mongodb-engine==0.5.2
djangotoolbox==1.6.2
pymongo==3.0.2
Run Code Online (Sandbox Code Playgroud)
运行时出错
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
是
django.core.exceptions.ImproperlyConfigured: 'django_mongodb_engine' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
u'base', u'mysql', u'oracle', u'postgresql_psycopg2', u'sqlite3'
Error was: cannot import name BaseDatabaseFeatures
Run Code Online (Sandbox Code Playgroud)
任何建议如何解决这个问题.
我已经定义了类声明:
from mongoengine import *
class TickDataDocument(Document):
"""
"""
instrument_id = StringField(max_length=10, unique=True, required=True)
tick_data = ReferenceField(TickDocument)
class TickDocument(Document):
"""
"""
price = DecimalField(precision=2, required=True)
volume = LongField(required=True)
turnover = DecimalField(precision=2, required=True)
update_time = DateTimeField(unique=True, required=True)
Run Code Online (Sandbox Code Playgroud)
我想在一段时间内查询update_time.
TickDataDocument.objects(instrument_id="fa1100").filter(tick_data__ update_time__lt =datetime.datetime(2013,9,3))
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
mongoengine.errors.InvalidQueryError:无法在mongoDB中执行连接:tick_data__update_time
我怎么能有五个解决方案来查询mongoengine中的内部引用字段.
我试图使用DjangoModelPermissions,它似乎无法正常工作.
这是代码:
class TestViewSet(viewsets.ModelViewSet):
model = Test
serializer_class = serializers.TestSerializer
permission_classes = (permissions.DjangoModelPermissions,)
def create(self, request):
response_data = {}
response_data['type'] = 'error'
data=json.loads(request.raw_post_data)
test = Test.objects.create(name=data['name'],\
description=data['description'],\
start_date=data['start_date'],\
end_date=data['end_date'])
#save changes
test.save()
return Response({'status': 'ok', "result": test.id})
Run Code Online (Sandbox Code Playgroud)
我不认为这种情况有什么不同,但我使用的是django_mongodb_engine.
我有一个没有权限的用户,它可以创建测试实例.另一方面,我如何阻止GET,以便具有正确权限的用户可以执行该操作?
谢谢
我创建了一个django(1.6.1)项目并使用mongodb.当我运行python manage.py runserver 0.0.0.0:8000启动服务器时,它给我以下错误
File "D:\Python34\lib\importlib\__init__.py", line 129, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2186, in _gcd_import
File "<frozen importlib._bootstrap>", line 2169, in _find_and_load
File "<frozen importlib._bootstrap>", line 2158, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1209, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1133, in _exec
File "<frozen importlib._bootstrap>", line 1432, in exec_module
File "<frozen importlib._bootstrap>", line 1537, in get_code
File "<frozen importlib._bootstrap>", line 1497, in source_to_code
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File …Run Code Online (Sandbox Code Playgroud) 你可以使用contrib.auth.models.User或任何contrib.auth和Django MongoDB引擎吗?
我按照指示配置了MongoDB引擎,并且适用于自定义模型,但是:
from django.contrib.auth.models import User
a = User.objects.create_user(username='foo', email='foo@bar.com',
password='foo123bar')
a.save()
...
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (5, 0))
...
ValueError: invalid literal for int() with base 10: '4f3757d4eb60261dae000001'
Run Code Online (Sandbox Code Playgroud)
有没有办法使用普通的用户模型和auth系统,还是我现在必须实现自己的?
如果它目前不受支持或者是未知的领域,那么有没有办法将用户存储在mysql中,所有我的mongodb引擎模型都存储在MongoDB中?
我试图Mongodb在我的Django.
下面是连接设置 settings.py
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': 27017,
}
}
Run Code Online (Sandbox Code Playgroud)
当我试图运行时,python manage.py syncdb我收到这样的错误:
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/django/core/management/__init__.py", line 429, in execute_from_command_line
utility.execute()
File "/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv …Run Code Online (Sandbox Code Playgroud) 我正在使用Django和MongoDB构建一个网站.有2个,我们可以用它来连接流行的API框架Django和MongoDB,一个是mongoengine,另一个是django-mongodb-engine.
因为mongoengine不再支持Django 最新的Document,并且django-mongodb-engine需要另一个django-nonrel使开发环境有点复杂的软件包.
我想知道,如果我可以使用Pymongo连接Django和MongoDB直接.
有没有人可以分享相同的经验?以及如何setting.py在Django中设置db in 以使db公开?