在某个项目中,我实现了两个表的用户请求映射(在运行时),这两个表通过1对n关系连接(一个表有一个ForeignKey字段)。
从我从文档中获得的,通常的方法是在带有backref的非外键表上将mapped_collection作为collection_class添加到映射属性的orm.relation,这样最终两个table orm对象都有彼此映射在一个属性上(一个具有通过其上使用的orm.relation的collection_class的集合,另一个具有由backref放置在其上的属性)。
我处于这样一种情况,我有时只希望ForeignKey端具有映射属性到另一个表(那个,由backref创建),具体取决于用户决定的内容(他可能只是想要将那一面映射出来。)
现在我想知道我是否可以简单地在ForeignKey表上使用orm.relation,所以我可能会像以前一样使用mapped_collection但在非外键表上得到orm.relation。没有 backref,并且foreignkey表上的另一个orm.relation替换了自动化backref(使两个表上的两个orm.relations从两侧相互映射)。
这会让我遇到麻烦吗?结果是否等效(对于带有backref的非外键表上只有一个orm.relation)?有没有另外一种方法可以在ForeignKey方面映射,而不必在非ForeignKey表上映射字典以及该反射?
答案 0 :(得分:1)
我现在自己找到了答案:
如果你从每一侧使用orm.relation
并且没有背景,你必须使用back_populates,或者如果你在一侧乱七八糟,它将无法在另一侧的映射中正确更新。
因此,可以从每一侧orm.relation
而不是自动反射,但你必须相应地使用back_populates。