Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
73 views
in Technique[技术] by (71.8m points)

python - Get child table by ORM relationship

Given a table that has a relation:

class Child(Model):
    ...
    parent = relationship('Parent')

If we have an instance child = Child(...) of the class and an InstrumentedAttribute attr = Child.parent of one of the class's relationships1, is there a clean way to get the related object of the instance (i.e. child.parent in this case)? Doing

getattr(child, attr.key)

works, of course, but using reflection when we have a "proper" accessor is a pretty questionable code smell. (It also depends on the lower-level .key API for the high-level task of accessing an attribute, which is also smelly.)

The reason behind this question is that I am writing generic code to be used on multiple tables, where the relationship is specified at the call site. This means that child.parent will not work, as the relationship to be used might not be called parent. (The name could be passed in as an additional string argument, but then we're back to using getattr.)

Is there a more idiomatic way to do this?


1 Presumably, a solution would also work for InstrumentedAttributes of vanilla columns as well, but that's not a requirement.

question from:https://stackoverflow.com/questions/65941632/get-child-table-by-orm-relationship

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...