Mi aplicación utiliza una combinación de Flask, Flask-SQLAlchemy, Flask-WTF y Jinja2.Flask-SQLAlchemy: cómo insertar o actualizar condicionalmente una fila
En su versión actual, tengo una tabla de configuraciones. La tabla solo tendrá un registro con un campo. Inicialmente, la tabla contiene cero registros.
Lo que quiero lograr es:
- Dado que no existe ninguna entrada en dB, a continuación, muestran forma vacía listo para la entrada del usuario
- Teniendo en cuenta que una entrada existe, muestran la entrada, y
- si el usuario cambia el valor, entonces actualice el rec en db.
Aquí está mi código:
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)
Tal como está, este código crea un registro si no existe pero la columna rssfeed
está vacía.
¿Cómo puedo cambiar este código para que INSERT
si el registro no existe y UPDATE
si lo hace?
Solo FYI - 'form.validate' debe ser' form.validate() '- una función es siempre cierta, pero su formulario * podría * no pasar la validación. –
¡Gracias por señalar eso! – happygoat