6

我有一个类似于下面的类结构。sqlalchemy 使用 db.create_all 创建的表看起来不错。添加作业时填写了相应的列(school_id 为教师,precinct_id 为警察)。我的问题是在尝试调用 do_stuff() 时出现的:

p = Teacher(...)
p.do_stuff()

返回“hey im the parent”,这是 Job 的返回值。因此,即使所有内容都已正确插入数据库,但似乎没有发生实际继承,而是唯一存在的模型是作业模型。有没有办法解决这个问题,或者我应该以另一种方式进行设置?

class Job(db.Model):
    id = Column(Integer, primary_key=True)
    ...

    def __init__(...):
        ...

    def do_stuff(self):
        print 'hey im the parent'

class Teacher(Job):
    school_id = Column(Integer, ForeignKey('school.id'))
    def __init__(...):
        super(Teacher, self).__init__(...)
        self.school_id = school_id

    def do_stuff(self):
        print 'teacher here'

class Policeman(Job):
    precinct_id = Column(Integer, ForeignKey'precinct.id'))
    def __init__(...):
        super(Policeman, self).__init__(...)
        self.precinct_id = precinct_id

    def do_stuff(self):
        print 'police ack'
4

1 回答 1

0

我相信您需要通过使用反向引用来指定模型之间的关系或db.relationship(). 这些答案已经提供了一些选项:backref & db.relationship外键关系

于 2017-10-30T08:35:12.470 回答