我有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
我刚刚开始使用这个库,所以这可能是由于对文档的误解。
答案 0 :(得分:1)
我知道这是一个老问题但是如果其他人收到此错误,我发现此链接:Peewee models perform initialization on startup因此您必须在任何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()