python - SqlAlchemy 计数表关系
问题描述
我在这里有一个班级用户,他们可以喜欢和不喜欢其他用户发布的帖子。我有一张表格来跟踪用户对帖子的好恶,如下所示:
class Users(db.Model):
id = db.Column("id", db.Integer, primary_key=True)
name = db.Column(db.String(100))
email = db.Column(db.String(100))
password = db.Column(db.String(100))
status = db.Column(db.String(100))
about = db.Column(db.String(500))
liked = db.relationship(
'PostLike',
foreign_keys='PostLike.user_id',
backref='user', lazy='dynamic')
def like_post(self, post):
if not self.has_liked_post(post):
like = PostLike(user_id=self.id, post_id=post.id)
db.session.add(like)
def unlike_post(self, post):
if self.has_liked_post(post):
PostLike.query.filter_by(
user_id=self.id,
post_id=post.id).delete()
def has_liked_post(self, post):
return PostLike.query.filter(
PostLike.user_id == self.id,
PostLike.problem_id == post.id).count() > 0
def __init__(self, name, email, password, status):
self.name = name
self.email = email
self.password = password
self.status = status
self.about = "Nothing so far..."
self.liked_posts = ""
class Problem(db.Model):
id = db.Column("id", db.Integer, primary_key=True)
title = db.Column(db.String(100))
contents = db.Column(db.String(700))
author_id = db.Column(db.Integer)
time = db.Column(db.DateTime)
def __init__(self, title, contents, author_id):
self.title = title
self.contents = contents
self.author_id = author_id
self.time = datetime.now()
class PostLike(db.Model):
__tablename__ = 'post_like'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
problem_id = db.Column(db.Integer, db.ForeignKey('problem.id'))
一些代码来自此堆栈帖子:如何在 Python Flask 中实现类似按钮功能来发布帖子?
现在我想做的是通过数据库计算给定帖子的喜欢数量。我看了这个:Counting Relations in SQLAlchemy但我不知道 func 和 core 是什么意思,所以有人有我可以使用的解决方案吗?
解决方案
推荐阅读
- opencv - findcontours 函数是如何工作的。它背后的理论是什么
- c# - 无法将对象转换为 GenericList
- python - 使用列表动态将列添加到 sqlite3 表中
- tensorflow2.0 - 从打印中删除 TF 2.0 警告
- ffmpeg - ffmpeg:视频参数与DNxHD不兼容
- c++ - 指向指向 int 的指针数组的指针数组
- java - 困惑,为什么不能叫出无效乘客并且没有任何错误
- r - “闭包”类型的对象不可子集
- lua - 如何在lua中使用2列迭代和打印文本?
- azure-active-directory - 使用 Azure AD SSO 配置应用程序所需的信息