2012-04-17 3 views
0

장고 프레임 워크와 함께 내 파이썬 (2.7) 프로젝트에 mongodb를 사용하고 있습니다 ... 파이썬 manage.py runserver가 작동하지만 파이썬 manage.py syncdb를 동기화하면 터미널에 다음 오류가 표시됩니다.내 프로젝트의 오류는 무엇입니까?

Creating tables ... 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 438, in execute_manager 
    utility.execute() 
    File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 379, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 191, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 220, in execute 
    output = self.handle(*args, **options) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 351, in handle 
    return self.handle_noargs(**options) 
    File "/usr/lib/pymodules/python2.7/django/core/management/commands/syncdb.py", line 109, in handle_noargs 
    emit_post_sync_signal(created_models, verbosity, interactive, db) 
    File "/usr/lib/pymodules/python2.7/django/core/management/sql.py", line 190, in emit_post_sync_signal 
    interactive=interactive, db=db) 
    File "/usr/lib/pymodules/python2.7/django/dispatch/dispatcher.py", line 172, in send 
    response = receiver(signal=self, sender=sender, **named) 
    File "/usr/lib/pymodules/python2.7/django/contrib/auth/management/__init__.py", line 41, in create_permissions 
    "content_type", "codename" 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 107, in _result_iter 
    self._fill_cache() 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 772, in _fill_cache 
    self._result_cache.append(self._iter.next()) 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 959, in iterator 
    for row in self.query.get_compiler(self.db).results_iter(): 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 229, in results_iter 
    for entity in self.build_query(fields).fetch(low_mark, high_mark): 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 290, in build_query 
    query.order_by(self._get_ordering()) 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 339, in _get_ordering 
    raise DatabaseError("Ordering can't span tables on non-relational backends (%s)" % order) 

django.db.utils.DatabaseError: Ordering can't span tables on non-relational backends (content_type__app_label) 

어떻게이 문제를 해결하기 위해?

+0

initdb는 mongo를 사용하여 join-like 쿼리를 수행하려고합니다. :) –

답변

4

장고 대신에 장고 논렐을 사용해야한다.

+0

@ Jonas.H : Django-nonrel 설치 및 사용법에 대한 간단한 튜토리얼이 있습니까? 또한 차이점은 무엇입니까? 장고 - nonrel과 django ?? – BobDroid

+0

http://www.allbuttonspressed.com/projects/django-nonrel 해당 페이지를 읽은 후 MongoDB 관련 지침은 http://django-mongodb.org에서 찾을 수 있습니다. –

+0

혼란스러워하는 사람은 장고 -nonrel은 Django의 포크 버전입니다. –

2

나는 장고와 함께 mongoengine을 사용했지만, 예를 들어 mongo_models.py와 같은 파일을 만들어야합니다. 이 파일에서 Mongo 문서를 정의합니다. 그런 다음 각 Mongo 문서와 일치하는 양식을 만듭니다. 각 폼은 Mongo에 저장된 것을 삽입하거나 업데이트하는 save 메소드를 가지고 있습니다. Django 양식은 모든 데이터 백엔드에 연결하도록 설계되었습니다 (공예와 함께)

BEWARE : 문서 또는 모델에 설명 할 수있는 잘 정의되고 구조화 된 데이터가있는 경우 Mongo를 사용하지 마십시오. 그것과 PostGreSQL과 같은 것이 더 잘 작동합니다.

  • PostGreSQL을 관계형 또는 구조화 된 데이터로 사용하기 때문에 좋은 결과를 얻었습니다. 메모리 공간이 작고 응답이 좋습니다.
  • Redis를 사용하여 캐시하거나 메모리 대기열/목록에서 작동하므로 매우 좋습니다. 훌륭한 성능은 당신이 그것에 대처할 수있는 기억을 가지고 있음을 의미합니다.
  • 저는 Mongo를 사용하여 큰 JSON 문서를 저장하고 Map을 수행하고 (필요한 경우) 매우 좋기 때문에이를 줄입니다. 조회 속도를 높이려면 특정 열에 대해 색인을 사용해야합니다.

사각형 구멍을 채우지 마십시오. 그것은 그것을 채울 수 없습니다.

Mongo가 버즈 단어이기 때문에 Mongo에 대한 관계형 DB를 교환하고 싶었던 게시물이 너무 많습니다. 나 잘못 이해하지 마라. 몽고는 너 정말 적절할 때 정말 대단해. 나는 몽고를 적절하게 사용하는 것을 좋아한다.

관련 문제