我是新手,现在正在建立一个微博应用程序来学习它。我正在尝试添加一项功能,用户可以获得“应该关注的人”等建议。
模型文件:
from app import db
followers = db.Table('followers',
db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))
)
class User(db.Model):
id=db.Column(db.Integer, primary_key=True)
username=db.Column(db.String(32),index=True,unique=True)
First_name=db.Column(db.String(32))
Last_name=db.Column(db.String(32))
password=db.Column(db.String(32))
email=db.Column(db.String(20))
posts=db.relationship('Post',backref='author',lazy='dynamic')
last_seen=db.Column(db.DateTime)
about_me=db.Column(db.String(200))
followed=db.relationship('User',
secondary='followers',
primaryjoin=followers.c.follower_id==id,
secondaryjoin=followers.c.followed_id==id,
backref=db.backref('followers',lazy='dynamic'),
lazy='dynamic')
def follow(self,user):
if not self.is_following(user):
self.followed.append(user)
return self
def unfollow(self,user):
if self.is_following(user):
self.followed.remove(user)
return self
def is_following(self,user):
return `self.followed.filter(followers.c.followed_id==user.id).count()>0`
def followed_posts(self):
return `Post.query.join(followers,followers.c.followed_id==Post.user_id).filter(followers.c.follower_id==self.id).order_by(Post.timestamp.desc())`
is_following()函数检查登录用户是否跟随另一个用户。
以下是用于返回未跟踪用户列表的代码行。
suggested_users=User.query.filter(g.user.is_following(User) is False).order_by(func.random()).limit(2).all()
所有用户都关注自己。问题是suggest_users总是评估为空列表。 有人可以帮忙吗? g.user设置为current_user。