我正试图在这里实现这两点:
1.-按其最好的朋友姓名分类用户 2.-按照他的朋友数量对用户进行排序
这就是我写的:
class Monkey(db.Model):
__tablename__ = 'monkey'
__table_args__ = (
db.UniqueConstraint('best_friend'),
)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
age = db.Column(db.Integer)
email = db.Column(db.String(128), index=True, unique=True)
best_friend = db.Column(db.String, db.ForeignKey('monkey.name'))
password = db.Column(db.String(128))
is_admin = db.Column(db.Boolean)
number_friends = db.Column(db.Integer)
def __init__(self, name, age, email, password, best_friend=None, is_admin=False):
self.name = name
self.age = age
self.email = email
self.password = generate_password_hash(password)
self.best_friend = best_friend
self.is_admin = is_admin
def number_friends(self):
number = Friendship.query.filter_by(monkey=self.id).count()
return number
def get_best_friend(self):
bf = Monkey.query.filter_by(id=self.best_friend).first()
return bf.name
def is_friend_of(self, friend):
friendship = Friendship.query.filter_by(monkey=self.id, friend=friend).first()
if (friendship == None):
return False
else:
return True
class Friendship(db.Model):
__tablename__ = 'friendship'
__table_args__ = (
db.PrimaryKeyConstraint('monkey', 'friend'),
)
monkey = db.Column(db.Integer, db.ForeignKey('monkey.id'))
friend = db.Column(db.Integer, db.ForeignKey('monkey.id'))
def __init__(self, monkey, friend):
self.monkey = monkey
self.friend = friend
所以,你可以看到我可以通过使用number_friends()
方法获得猴子的朋友数量,问题是我无法弄清楚如何使用这个数字来订购查询
我能做什么?
这是我已经尝试过的东西
monkeys = models.Monkey.query.order_by(models.Monkey.number_friends()).paginate(page, 5, False)
到目前为止,我知道这没有用,因为我必须进行实例化以使用此方法吗?有没有办法使用这种方法number_friends()
以sqlalchemy的方式订购查询?