我有一个烧瓶应用程序,我在其中创建了一堆相互关联的类:
用户课程讲义队列资产
所以我正在尝试做一个新的讲座和笔记,我为每一件事定义了一个方法。
创建注释
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
创建讲座
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 菜鸟)。这是怎么回事?