Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy:动态加载对另一个模块的反向引用_Python_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy:动态加载对另一个模块的反向引用

Python SQLAlchemy:动态加载对另一个模块的反向引用,python,sqlalchemy,Python,Sqlalchemy,假设我在一个模块中有一个用户模型 class User(Model): id = Column(Integer, primary_key=True) 然后,我想从另一个模块中的Post模型向用户添加一个动态加载的多对一关系。另外,我不想用其他模块的关系“污染”用户的模型定义 除了像这样从Post模型外部向用户类添加字段之外,还有更干净的方法吗 class Post(Model): user_id = Column(Integer, ForeignKey('user.id'))

假设我在一个模块中有一个用户模型

class User(Model):
    id = Column(Integer, primary_key=True)
然后,我想从另一个模块中的Post模型向用户添加一个动态加载的多对一关系。另外,我不想用其他模块的关系“污染”用户的模型定义

除了像这样从Post模型外部向用户类添加字段之外,还有更干净的方法吗

class Post(Model):
    user_id = Column(Integer, ForeignKey('user.id'))

User.posts = relationship('Post', backref='user', lazy='dynamic')

谢谢

好的,您可以在Post模型中定义它(见下文)


哦,发生了一些奇怪的事情。。。我第一次尝试了与此非常类似的东西,但backref的表述方式略有不同,如“relationship('User',backref='posts',lazy='dynamic')”。如果我这样做,我会得到一个错误(关于关系(无论什么),“dynamic”Loader不能用于多对一/一对一关系和/或uselist=False。但是,如果我按照您的方式进行,它工作得很好。我想知道这是一个bug还是这两种方法之间存在差异?有一个巨大的差异:在一种情况下,lazy应用于关系的一方,而在另一种情况下,lazy应用于关系的另一方.
class Post(Model):
    user_id = Column(Integer, ForeignKey('user.id'))
    user = relationship('User', backref=backref('posts', lazy='dynamic'))