Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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
Peewee Python ORM:将查询结果分配给ForeignKeyField_Python_Orm_Peewee - Fatal编程技术网

Peewee Python ORM:将查询结果分配给ForeignKeyField

Peewee Python ORM:将查询结果分配给ForeignKeyField,python,orm,peewee,Python,Orm,Peewee,我有两个模型,一对多关系非常简单。我试图将查询其中一个实体的结果分配给另一个实体,但我不知道如何做。代码如下: 主类继承自2个类,并且还重载了\uuuu init\uuu方法 class Bot(MySQLDatabase, ClientXMPP): room = ForeignKeyField(Room) 在某个时候,我查询并尝试分配: def __init__(self, ..., ..., room): DBConnection.connect() self.r

我有两个模型,一对多关系非常简单。我试图将查询其中一个实体的结果分配给另一个实体,但我不知道如何做。代码如下:

主类继承自2个类,并且还重载了
\uuuu init\uuu
方法

class Bot(MySQLDatabase, ClientXMPP):
    room = ForeignKeyField(Room)
在某个时候,我查询并尝试分配:

def __init__(self, ..., ..., room):
    DBConnection.connect()

    self.room = Room.get(...)
    self.save()
但这给我带来了一个例外:

Traceback (most recent call last):
  File "main.py", line 25, in <module>
    xmpp = Bot(..., ..., room)
  File "/home/.../bot.py", line 29, in __init__
    self.room = room
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 724, in __set__
    instance._data[self.att_name] = value.get_id()
TypeError: 'NoneType' object does not support item assignment
回溯(最近一次呼叫最后一次):
文件“main.py”,第25行,在
xmpp=Bot(…,…,房间)
文件“/home/../bot.py”,第29行,在_init中__
房间
文件“/usr/local/lib/python2.7/dist packages/peewee.py”,第724行,在__
实例._data[self.att_name]=value.get_id()
TypeError:“非类型”对象不支持项分配

我刚开始使用这个库,所以这可能是由于对文档的误解。

我知道这是一个老问题,但如果其他人遇到此错误,我会找到以下链接:因此,您必须在任何peewee模型构造函数中调用super

所以


将成为:

def __init__(self, ..., ..., room):
   super(Bot, self).__init__()
   DBConnection.connect()
   self.room = Room.get(...)
   self.save()

你能详细介绍一下你的模型,特别是房间的种类吗?。否则,我打赌你已经知道我正在更新帖子以添加更多信息。我不认为Room的结构是相关的(毕竟,它是一个具有属性的简单类),但由于我使用重载init方法的多重继承,问题似乎就在这里。对不起,我认为您需要在这里更清楚地发布您的模型。无论如何,请尝试使用简单的peewee查询。
def __init__(self, ..., ..., room):
   super(Bot, self).__init__()
   DBConnection.connect()
   self.room = Room.get(...)
   self.save()