2014-12-23 4 views
1

장고를 성공적으로 설치했으며 현재 Mongoengine과 함께 사용하려고합니다. 나는 다음과 같은 오류가 응용 프로그램을 설정 한 후 "파이썬 manage.py makemigrate"를 사용하는 경우 :Windows에서 Mongo db로 장고 설치시 문제가 발생했습니다. 8

$ PATH $으로 내 프로젝트의 경로입니다
$PATH$\env\lib\site-packages\mongoengine\django\mongo_auth\models.py:14: RemovedInDjango18Warning: `MongoUserManager.get_query_set` method should be renamed `get_queryset`. 
     class MongoUserManager(UserManager): 

    Traceback (most recent call last): 
     File "manage.py", line 10, in <module> 
     execute_from_command_line(sys.argv) 
     File "$PATH$\env\lib\site-packages\django\core\management\__init__.py", line 385, in execute_from_command_line 
     utility.execute() 
     File "$PATH$\env\lib\site-packages\django\core\management\__init__.py", line 354, in execute 
     django.setup() 
     File "$PATH$\env\lib\site-packages\django\__init__.py", line 21, in setup 
     apps.populate(settings.INSTALLED_APPS) 
     File "$PATH$\env\lib\site-packages\django\apps\registry.py", line 108, in populate 
     app_config.import_models(all_models) 
     File "$PATH$\env\lib\site-packages\django\apps\config.py", line 202, in import_models 
     self.models_module = import_module(models_module_name) 
     File "$PATH$\env\lib\importlib\__init__.py", line 109, in import_module 
     return _bootstrap._gcd_import(name[level:], package, level) 
     File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
     File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
     File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
     File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
     File "<frozen importlib._bootstrap>", line 1129, in _exec 
     File "<frozen importlib._bootstrap>", line 1471, in exec_module 
     File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
     File "$PATH$\myproject\polls\models.py", line 4, in <module> 
     class Question(models.Model): 
     File "$PATH$\myproject\polls\models.py", line 6, in Question 
     pub_date = models.DataTimeField('date published') 
    AttributeError: 'module' object has no attribute 'DataTimeField' 

.

from django.db import models 
    #from mongoengine import * 

    class Question(models.Model): 
     question_text = models.CharField(max_length=200) 
     pub_date = models.DataTimeField('date published') 

    class Choice(models.Model): 
     question = models.ForeignKey(Question) 
     choice_text = models.CharField(max_length=200) 
     votes = models.IntegerField(default=0) 

임 사용 장고 v1.7.1 및 mongoengine v0.8.0 :

응용 프로그램은 다음 models.py이 포함되어 있습니다. mongo db를 포함하도록 편집 한 프로젝트의 settings.py 파일에서 오류가 발생할 수도 있습니다.

""" 
Django settings for myproject project. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.7/topics/settings/ 

For the full list of settings and their values, see 
https://docs.djangoproject.com/en/1.7/ref/settings/ 
""" 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 


# Quick-start development settings - unsuitable for production 
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ 

# SECURITY WARNING: keep the secret key used in production secret! 
SECRET_KEY = 'xg0wnp^w)[email protected]#^v45**4^3v-at#ktre=^n#cw2!6(q__gq' 

# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

TEMPLATE_DEBUG = True 

ALLOWED_HOSTS = [] 


# Application definition 


INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'mongoengine.django.mongo_auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'polls', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = 'myproject.urls' 

WSGI_APPLICATION = 'myproject.wsgi.application' 

import mongoengine 

# Database 
# https://docs.djangoproject.com/en/1.7/ref/settings/#databases 

#DATABASES = { 
# 'default' : { 
#  'ENGINE' : 'django_mongodb_engine', 
#  'NAME' : 'my_database' 
# } 
#} 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

#DATABASES = { 
# 'default': { 
#  'ENGINE': 'django.db.backends.dummy', 
# } 
#} 

AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend', 
) 

MONGOENGINE_USER_DOCUMENT = 'mongoengine.django.auth.User' 


#SESSION_ENGINE = 'mongoengine.django.sessions' 
#SESSION_SERIALIZER = 'mongoengine.django.sessions.BSONSerializer' 

#_MONGODB_USER = 'mongouser' 
#_MONGODB_PASSWD = 'password' 
#_MONGODB_HOST = 'thehost' 
#_MONGODB_NAME = 'thedb' 
#_MONGODB_DATABASE_HOST = \ 
# 'mongodb://%s:%[email protected]%s/%s' \ 
# % (_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME) 

#mongoengine.connect(_MONGODB_NAME, host=_MONGODB_DATABASE_HOST) 

#AUTHENTICATION_BACKENDS = (
# 'mongoengine.django.auth.MongoEngineBackend', 
#) 

# Internationalization 
# https://docs.djangoproject.com/en/1.7/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.7/howto/static-files/ 

STATIC_URL = '/static/' 

또한 가상 프로젝트를 사용하여 가상 환경을 만듭니다. 이것도 프로그램에 영향을 미치는지 확실하지 않습니다.

답변

2

DateTimeField 대신에 DataTimeField이 오타입니다.

+0

아 ... thx. 하지만 지금 어떤 이유로 나는 다음과 같은 오류가 발생합니다 : "알 수없는 명령 : 'makemigrate'". 이것은 외관상으로는 오류가 일찍 발생한 이후로 이상하게 보입니다. – Hagadol

+0

오, 신경 쓰지 마세요. 명령에 다른 오타를 만들었습니다. 어쨌든 당신의 대답이 문제를 해결했습니다. 감사. – Hagadol

+0

@ 하갈 돌 : 지금까지 알아 내지 못했을 경우를 대비하여. 명령의 정확한 이름은'makemigrate'가 아니라'makemigrate'입니다. 첫 번째 오류가 발생한 이유는 manage.py가 마이그레이션을 만들기 전에'manage.py validate'를 실행하기 때문입니다. –

관련 문제