私はフラスコアプリを持っていて、そこではすべて互いに関係のあるクラスをたくさん作りました:
ユーザーコース講義ノートキューアセット
それで、私は新しい講義とメモを作ろうとしています、そして私はそれぞれのために定義された方法を持っています。
メモを作成
def createPad(user,course,lecture):
lecture.queues.first().users.append(user)
# make new etherpad for user to wait in
newNote = Note(dt) # init also creates a new pad at /p/groupID$noteID
db.session.add(newNote)
#db.session.commit()
# add note to user, course, and lecture
user.notes.append(newNote)
course.notes.append(newNote)
lecture.notes.append(newNote)
db.session.commit()
return newNote
createLecture
def createLecture(user, course):
# create new lecture
now = datetime.now()
dt = now.strftime("%Y-%m-%d-%H-%M")
newLecture = Lecture(dt)
db.session.add(newLecture)
# add lecture to course, add new queue to lecture, add user to queue, add new user to lecture
course.lectures.append(newLecture)
newQueue = MatchQueue('neutral')
db.session.add(newQueue)
newLecture.users.append(user)
# hook up the new queue to the user, lecture
newQueue.users.append(user)
newQueue.lecture = newLecture
# put new lecture in correct course
db.session.commit()
newLecture.groupID = pad.createGroupIfNotExistsFor(newLecture.course.name+dt)['groupID']
db.session.commit()
return newLecture
これはすべて、いくつかのコントローラーロジックから呼び出されます
newlec = createLecture(user, courseobj)
# make new pad
newNote = createPad(user,courseobj,newlec)
# make lecture live
newLecture.live = True
db.session.commit()
redirect(somewhere)
これにより、次のエラーがスローされます。
ObjectDereferencedError:属性'Queue.users'の変更イベントを発行できません-タイプの親オブジェクトがガベージコレクションされました。
lecture.queues.first().users.append(user)
でcreatePad
。_
これが何を意味するのか私にはわかりません。私はここでsqlalchemyの基本的な知識が不足していると思います(私はsqlalchemy noobです)。どうしたの?