首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError at / 'SimpleLazyObject‘对象不可调用

TypeError at / 'SimpleLazyObject‘对象不可调用
EN

Stack Overflow用户
提问于 2016-04-16 17:34:23
回答 1查看 919关注 0票数 0

我正在尝试用mongodb开发django的旧版本。

代码语言:javascript
复制
Django==1.5.11
django-crispy-forms==1.5.2
django-ifc-rwfm==0.1
django-mongodb-engine==0.6.0
django-registration-redux==1.2
djangotoolbox==1.8.0
pymongo==3.2.2

我正在尝试连接到数据库。

但是它返回: TypeError at / 'SimpleLazyObject‘对象不可调用

这是我的__init__.py文件

代码语言:javascript
复制
from django.conf import settings
from django.utils.functional import SimpleLazyObject    

from pymongo import MongoClient    

_connection = None    


def get_connection():
    global _connection
    if not _connection:
        _connection = MongoClient(
            host=getattr(settings, 'MONGODB_HOST', None),
            port=getattr(settings, 'MONGODB_PORT', None)
        )
        username = getattr(settings, 'MONGODB_USERNAME', None)
        password = getattr(settings, 'MONGODB_PASSWORD', None)
        db = _connection[settings.MONGODB_DATABASE]
        if username and password:
            db.authenticate(username, password)
        return db
    return _connection[settings.MONGODB_DATABASE]    


MongoClient = SimpleLazyObject(get_connection)    


def get_collection(collection_name):
    return getattr(MongoClient, collection_name)

我是刚来的django,谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-16 20:23:56

您有两种名为MongoClient的东西:一种是从pymongo导入的,另一种是分配给惰性对象的全局类。但是在get_connection中,您正在尝试调用其中的第一个,但是到那时名称已经被反弹到指向第二个。

您应该将模块级的名称更改为其他的名称。

(注意,所有这些都与Django无关;这是一个纯粹的Python问题。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36667438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档