我是新手,我正在尝试根据Flask视图中的不同用户事件更新模型。我可以在shell中访问它,并可以使用存储在其中的数据来提取一些字段。但我需要根据某些用户事件更新视图中的模型。以下是我的模型文件:
date
如何在以下视图中更新这些内容:
class Package(db.Model):
__tablename__ = 'package'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
student_id = db.Column(db.Integer, ForeignKey('student_profile.id'))
stripe_id = db.Column(db.String(45))
student_email = db.Column(db.String(20))
subscription_date = db.Column(db.DateTime, default=today)
expiry_date = db.Column(db.DateTime, default=deadline)
is_active = db.Column(db.Boolean, default=True)
planname = relationship('Plan', backref=backref('package'))
package_price = db.Column(db.Integer)
coupon = db.Column(db.String(12))
def __init__(self, id,
stripe_id,
student_email,
subscription_date,
expiry_date,
is_active,
planname,
package_price,
coupon):
self.id = id
self.student_id = student_id
self.student_email = student_email
self.subscription_date = subscription_date
self.expiry_date = expiry_date
self.is_active = is_active
self.planname = planname
self.package_price = package_price
self.coupon = coupon
我需要直接使用数据库表,这就是为什么混淆,因为烧瓶有很多形式的味道。 Wtf形式,Alchemyforms和形式。请指教。
答案 0 :(得分:0)
如果您的数据集不存在,但您需要创建表示数据集的模型实例,请根据您的用户事件设置属性并将实例添加到会话中。如果您已有现有数据集,则需要从数据库中查询它并更新所需的值。
from models import Package
@app.route('/somelink/<package_id>', default={'package_id': None}, methods=['POST'])
def somefunc(package_id):
if package_id is None:
package = Package()
else:
package = Package.query(Package.id=package_id).first_or_404()
if studentdidsomething:
package.planname = 'somename'
db.session.add(package)
db.session.commit()
return render_template('sometemplate.html')
在这里你可以使用或不使用package_id来调用somelink。如果您在没有新包的情况下致电将被创建。否则将使用现有的包。