2014-12-23 4 views
1

Я успешно установил django и в настоящее время пытаюсь использовать его в сочетании с Mongoengine. При использовании «питон manage.py makemigrate» после установки приложения, я получаю следующее сообщение об ошибке:Проблемы с настройкой Django с Mongo db в окнах 8

$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' 

Где $ PATH $ это путь к моему проекту.

Приложение содержит следующую models.py:

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) 

Im используя Джанго V1.7.1 и mongoengine v0.8.0. Ошибка также может возникнуть из файла settings.py в моем проекте, который я редактировал, чтобы включить mongo db.

""" 
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/' 

Кроме того, я использую virtualenv для создания вирутальной среды для моего проекта. Не уверен, что это также влияет на программу.

ответ

2

Опечатка: DataTimeField вместо DateTimeField.

+0

Ah ... thx. Но теперь по какой-то причине я получаю следующую ошибку: «Неизвестная команда:« makemigrate »». Мне это кажется странным, поскольку явным образом это вызвало ошибку раньше. – Hagadol

+0

О, неважно. Сделал еще одну опечатку в команде. В любом случае, ваш ответ устранил проблему. Благодарю. – Hagadol

+0

@ Хагадол: Если вы этого не поняли; Правильное имя команды - 'makemigrations', а не' makemigrate'. Причина, по которой вы получили первую ошибку, заключается в том, что manage.py запускает 'manage.py validate' до попытки создания ваших миграций. –

Смежные вопросы