Всем привет! У меня маленький опыт программирования на Flask, поэтому вопрос задам, возможно, глупый, но самостоятельно найти решение не смог. Столкнулся с непонятным поведением SQLalchemy. Исходные данные:
db = SQLAlchemy(app)
class User(db.Model):
password = db.Column(db.String(255))
# password = db.Column(db.Integer())
...
def user_update(user_id):
user_form = model_form(User, Form)
user = models.User.query.get(user_id)
form = user_form(request.form, user)
if request.method == 'POST':
form.populate_obj(user)
db.session.commit()
return redirect(url_for('user_view', user_id=user.id))
return render_template('user_detail.html', form=form, user=user)
(Копия тут)
На форме WTF атрибут password не передаётся.
Суть вопроса: при сохранении модели атрибут password сбрасывается до " если он текстовый (db.Text/db.String) и остаётся неизменным, если отличен от текстового (db.Integer/db.DateTime). Т.е. если форма не передала значения текстовых атрибутов — значения будут переписаны пустой строкой (при default=NULL). Если обновлять ручками через shell — всё нормально. Как пофиксить?
P.S. Задал вопрос на python@conference.jabber.ru, но там молчат.