Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongoengine QuerySet返回意外值_Python_Mongoengine - Fatal编程技术网

Python mongoengine QuerySet返回意外值

Python mongoengine QuerySet返回意外值,python,mongoengine,Python,Mongoengine,我在mongoengine上定义了dbSMS类。文档如下(我将mongoengine导入为db): 类数据库管理系统(数据库文档): sender=db.StringField(最大长度=12,必需=True) 目标=db.StringField(最大长度=12,必需=True) message=db.StringField(最大长度=255,必需=True) 状态=db.StringField(必需=False) 元={ “集合”:“短信息”, } 定义初始化(self,*args,**kwa

我在
mongoengine上定义了
dbSMS
类。文档
如下(我将
mongoengine
导入为
db
):

类数据库管理系统(数据库文档):
sender=db.StringField(最大长度=12,必需=True)
目标=db.StringField(最大长度=12,必需=True)
message=db.StringField(最大长度=255,必需=True)
状态=db.StringField(必需=False)
元={
“集合”:“短信息”,
}
定义初始化(self,*args,**kwargs):
super().\uuuuu init\uuuuuu(args,kwargs)
当我手动创建这个类的新对象时,我可以访问它的成员。但当我试图查询这个类的特定对象的数据库时,它会返回一些。。。嗯,奇怪。 这是我用来查询数据库和打印结果内容的代码:

self.buffer=dbSMS.objects(sender\uu in=self.phones,状态='on hold')
对于self.buffer中的sms:
打印(“dbSMS类型:{}”。格式(类型(sms)))
打印(“dbSMS发送方{}”.format(sms.sender))
打印(“dbSMS目标{}”.format(sms.target))
打印(“dbSMS消息{}”.format(sms.message))
它应该返回几个包含成员及其值的dbSMS对象,但输出如下:

dbSMS type: <class 'sms.dbSMS'>
dbSMS sender ()
dbSMS target {'sender': '+79000000000', 'message': 'Тест', '_updated': datetime.datetime(2018, 6, 26, 13, 19, 29), '__only_fields': [], '__auto_convert': False, '_created': datetime.datetime(2018, 6, 26, 13, 19, 29), '_etag': '2132f429984474ccb9755e021a1fbe4c6823ab01', 'target': '+79000000000', 'id': ObjectId('5b323d61e13823081b1db7ff'), 'status': 'on hold'}
dbSMS message None
dbSMS类型:
dbSMS发送器()
DBMS目标{'sender':'+79000000000','message':'tituteС砦','u updated':datetime.datetime(2018,6,26,13,19,29),'uu only砦u fields':[],'uuuu auto砦convert':False,'u created':datetime.datetime(2018,6,26,13,19,29),'u etag':'2132f429984474ccb9755e021a1fbe4c6823ab01','target':'79000000000','DBID':ObjectId('13832D6130817FF','status':'on hold'}
dbSMS消息无
正如您所看到的,返回对象的类型确实是dbSMS,但当我尝试访问其成员时,它会给我空的tuple、dict和成员及其值,而不是None。 Mongoengine documantation声明:

可以迭代QuerySet对象以从 数据库

因此,我希望看到我定义的类的对象


那么,我做错了什么?也许我用错误的方式定义了
dbSMS
类,或者我没有理解
dbSMS.objects
到底做了什么?

是的,我用错误的方式定义了
dbSMS
。QuerySet返回给我
args
kwargs
,我在
\uuuu init\uuuu
中完全忽略了它们,只是盲目地将它们传递给父类。下面是它现在的工作原理:

class dbSMS(db.DynamicDocument):
    sender = db.StringField(max_length=12, required=True)
    target = db.StringField(max_length=12, required=True)
    message = db.StringField(max_length=255, required=True)
    status = db.StringField(required=False)
    meta = {
        'collection': 'sms',
    }
我彻底摆脱了整个
\uuuu init\uuuu
,并将父类更改为
DynamicDocument
(因为我可能需要这种可伸缩性)。现在它完全按照预期工作

希望我愚蠢的错误能帮助别人