我的应用程序使用了 Flask、Flask-SQLAlchemy、Flask-WTF 和 Jinja2 的组合。
在它目前的化身中,我有一个设置表。该表将只有一个记录和一个字段。最初,该表包含零条记录。
我想要实现的是:
- 鉴于 db 中不存在任何条目,则显示准备好供用户输入的空表单
- 鉴于存在条目,显示该条目,然后
- 如果用户更改了值,则更新数据库中的记录。
这是我的代码:
模型.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
如果存在,我该如何更改此代码?