0

非常に単純な 1 対多の関係を持つ 2 つのモデルがあります。それらの 1 つをクエリした結果を他のエンティティに割り当てようとしていますが、その方法がわかりません。これはコードです:

メイン クラスは 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 に答える