私のアプリケーションでは、Flask、Flask-SQLAlchemy、Flask-WTF、および Jinja2 を組み合わせて使用しています。
現在の化身では、設定テーブルがあります。テーブルには、1 つのフィールドを持つ 1 つのレコードのみが含まれます。最初、テーブルにはゼロのレコードが含まれています。
私が達成したいことは次のとおりです。
- データベースにエントリが存在しない場合、ユーザー入力の準備ができている空のフォームを表示します
- エントリが存在する場合、エントリを表示し、
- ユーザーが値を変更した場合は、db の rec を更新します。
これが私のコードです:
models.py
class Provider(db.Model):
id = db.Column(db.Integer, primary_key = True)
rssfeed = db.Column(db.String(120), unique = True)
def __init__(self, rssfeed):
self.rssfeed = rssfeed
def __repr__(self):
return '<NZBMatrix feed url %r>' % self.rssfeed
フォーム.py
class SettingsForm(Form):
rssfeed = TextField('rssfed', validators= [Required()])
ビュー.py
@app.route('/settings', methods=["GET","POST"])
def settings():
""" show settings """
provider = Provider.query.get(1)
form = SettingsForm(obj=provider)
print provider
if request.method == "POST" and form.validate():
if Provider.query.get(1) is None:
provider = Provider(rssfeed=form.rssfeed.data)
form.populate_obj(provider)
db.session.add(provider)
db.session.commit()
flash("Settings added")
return render_template("settings.html", form=form)
現状では、レコードが存在しないがrssfeed
列が空の場合、このコードはレコードを作成します。
INSERT
レコードが存在しない場合と存在する場合に、このコードを変更するにはどうすれUPDATE
ばよいですか?