【发布时间】:2018-04-24 09:32:49
【问题描述】:
我在服务器端使用 Flask-SQLAlchemy 和烧瓶。 我想在用户(父)、类别(子)和项目(子子)之间创建关系。 我不知道父子子子项是否是解决此问题的正确方法,但我的最终目标是轻松获取每个类别中用户评分的所有项目。 以下是我尝试过的一种情况,但它不起作用,可能是因为我做错了什么。
我有一个包含项目类别的项目表(例如小说、非小说、犯罪书籍)。每个类别有 5 个项目(书籍)。我想让用户对每个类别的五个项目进行评分。所以,我有下表。
class User(db.Model, UserMixin):
__tablename__ = "users"
id = db.Column('user_id',db.Integer, primary_key=True)
active = db.Column(db.Boolean(), nullable=False, default=False)
username = db.Column(db.String(50), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, default='')
# do we need unique=True in any column
#let's create class for item(child) and category(parent)
class Rated_item(db.Model):
__tablename__ = 'item'
id = db.Column(db.Integer, primary_key=True)
item_id = db.Column(db.Integer)
category_id = db.Column(db.Integer)
quality = db.Column(db.String(50))
taste = db.Column(db.String(50))
user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))
# evaluation_status is set to True, once a user finishes an item.
evaluation_status = db.Column(db.Boolean, unique=False, default=False)
由于我正在使用基于 flask-jinja 的网页,因此每次用户登录时,我都需要发送用户的状态,即用户评价了多少类别以及每个类别中评价了多少项目。
我尝试关注,但我认为我在做一些概念上的错误。
status=Rated_item.query.filter_by(user_id = current_user.id).order_by(Rated_item.pub_date.desc()).all()
任何建议我应该如何改进我的表格或查询以获得用户评分的所有类别(以及每个类别中的所有项目)。
【问题讨论】:
标签: sqlalchemy flask-sqlalchemy