擅长:python、mysql、java
<p>在这种情况下,必须显式地编写<code>primaryjoin</code>和<code>secondaryjoin</code>条件:</p>
<pre><code>mapper(
User, t_users,
properties={
'followers': relation(
User,
secondary=t_follows,
primaryjoin=(t_follows.c.followee_id==t_users.c.id),
secondaryjoin=(t_follows.c.follower_id==t_users.c.id),
),
'followees': relation(
User,
secondary=t_follows,
primaryjoin=(t_follows.c.follower_id==t_users.c.id),
secondaryjoin=(t_follows.c.followee_id==t_users.c.id),
),
},
)
</code></pre>
<p>我编写这个示例是为了帮助您更好地理解<code>primaryjoin</code>和<code>secondaryjoin</code>参数的含义。当然,你可以用<code>backref</code>把它分类。</p>
<p>顺便说一下,下表中不需要<code>id</code>列,而是使用复合主键。实际上,无论如何,您都应该定义<code>follower_id</code>和<code>followee_id</code>对的唯一约束(作为主键或附加的唯一键)。</p>