0

我有 2 个模型具有非常简单的一对多关系。我正在尝试将查询其中一个的结果分配给另一个实体,但我不知道该怎么做。这是代码:

主类继承2个类,__init__方法也重载

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

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

4

1 回答 1

1

我知道这是一个老问题,但如果其他人收到此错误,我发现此链接:Peewee 模型在启动时执行初始化,因此您必须在任何 peewee 模型构造函数中调用 super。

所以,

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

   self.room = Room.get(...)
   self.save()


会成为:

def __init__(self, ..., ..., room):
   super(Bot, self).__init__()
   DBConnection.connect()
   self.room = Room.get(...)
   self.save()
于 2016-08-24T18:46:08.013 回答