Ứng dụng của tôi sử dụng kết hợp Flask, Flask-SQLAlchemy, Flask-WTF và Jinja2.Flask-SQLAlchemy: Cách điều kiện chèn hoặc cập nhật hàng
Trong hiện thân hiện tại của nó, tôi có bảng cài đặt. Bảng sẽ chỉ có một bản ghi với một trường. Ban đầu bảng chứa 0 bản ghi.
Những gì tôi muốn đạt được là:
- Cho rằng không có mục tồn tại trong db, sau đó hiển thị dưới dạng trống sẵn sàng cho người dùng nhập vào
- Cho rằng một mục tồn tại, cho thấy sự xâm nhập, và
- nếu người dùng thay đổi giá trị, sau đó cập nhật rec trong db.
Đây là mã của tôi:
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
forms.py
class SettingsForm(Form):
rssfeed = TextField('rssfed', validators= [Required()])
views.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)
Vì nó là viết tắt của mã này tạo bản ghi nếu nó không tồn tại nhưng cột rssfeed
trống.
Làm cách nào để thay đổi mã này để nó INSERT
nếu bản ghi không tồn tại và UPDATE
nếu có?
Chỉ cần FYI - 'form.validate' nên là' form.validate() '- một hàm luôn luôn đúng, nhưng biểu mẫu * của bạn có thể * không vượt qua xác thực. –
Cảm ơn bạn đã chỉ ra điều đó! – happygoat