擅长:python、mysql、java
<p>这听起来是<a href="http://docs.sqlalchemy.org/en/latest/orm/extensions/associationproxy.html" rel="nofollow noreferrer">Association Proxy</a>的一个很好的用例。这将代理相关模型的字段。在这种情况下,实施将是:</p>
<pre><code>from sqlalchemy.orm import relationship
from sqlalchemy.ext.associationproxy import association_proxy
class MarkerType(db.Model):
__tablename__="mrk_types"
_marker_type_key = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
class Marker(db.Model):
__tablename__="mrk_marker"
_marker_key=db.Column(db.Integer,primary_key=True)
_marker_type_key=db.Column(db.Integer, ForeignKey('mrk_types._marker_type_key')
mt = relationship(MarkerType, uselist=False)
marker_type = association_proxy('mt', 'name')
</code></pre>
<p>这允许查询类似<code>session.query(Marker).filter_by(marker_type='my_marker_type')</code></p>
<p><code>marker_type</code>字段是MarkerType对象上<code>name</code>字段的代理。该对象可以被<code>mt</code>字段(关系字段)引用</p>
<p>注意<code>uselist=False</code>。这表示每个标记有一个标记类型。关系会自动检测到外键并使用它。在</p>