从sqllite3数据库中筛选查询

时间:2017-07-09 12:15:12

标签: python flask flask-sqlalchemy

我是新手,现在正在建立一个微博应用程序来学习它。我正在尝试添加一项功能,用户可以获得“应该关注的人”等建议。

模型文件:

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。

0 个答案:

没有答案