如何在flask-sqlalchemy中创建父子子信息

时间:2014-07-13 16:03:22

标签: sqlalchemy flask-sqlalchemy

我在服务器端使用Flask-SQLAlchemy和flask。 我想在User(Parent),Category(Child)和item(Subchild)之间创建一个关系。 我不知道父母子女是否是正确的方法,但我的最终目标是轻松获取用户在每个类别中评定的所有项目。 以下是我尝试的其中一个案例,但它不起作用,可能是因为我做错了。

我有一个带有项目类别的项目表(例如小说,非小说,犯罪书)。每个类别有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()

任何建议我应该如何改进我的表格或查询以获得用户评定的所有类别(以及每个类别中的所有项目)。

1 个答案:

答案 0 :(得分:1)

'''用户评定的商品'''

status1 = Rated_item.query.func.count(distinct(item_id)).filter_by(user_id == current_user.id) 
用户评分的'''''''

status2 = Rated_item.query.func.count(distinct(category_id)).filter_by(user_id == current_user.id)

我想这个查询可以帮到你。