フラスコの新機能で、Flaskビューでさまざまなユーザーイベントに基づいてモデルを更新しようとしています。私はシェルでそれにアクセスすることができ、そこに格納されたデータでいくつかのフィールドをプルアップすることができます。しかし、特定のユーザーイベントに基づいてビューからモデルを更新する必要があります。以下は私のモデルファイルです:Flaskのデータベースモデルをビュー内の関数で更新する
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
のようなビューでこれらを更新する方法:フラスコは、多くのフォームの風味を持っているので、それはなぜ混乱しますので、私は、データベーステーブルを直接操作する必要が
from models import Package
@app.route('/somelink', methods=['POST'])
def somefunc():
if studentdidsomething:
planname = 'somename'
db.session.commit(planname)
return render_template('sometemplate.html')
。 Wtfフォーム、Alchemyforms、フォームのみ。お知らせ下さい。
すべてのモデルフィールドの詳細を作成/変更するには参照が1つ必要です。また、最後の2つの文章はあなたの投稿の私を混乱させる。 @ app.routeでpackage_idを呼び出すと、既存のパッケージが作成されますか?ログインした現在のユーザーの変更を決定する最後の質問ですか? –
'/ somelink/12'へのポストリクエストを行うと、12番のパッケージが変更されます。'/somelink/'というurlへのポストリクエストをすると(パッケージIDを渡さないと)、新しいパッケージが作成されます。 – MrLeeh