Не разобрался почему, Flask не подтягивает с базы данные для формы (Wtf-Forms) для типа поля SelectField, после добавления новых данных в базу данных а только после перезагрузки сервера.
Форма создания заказа клиента - но при этом можно выбрать существующего клиента с базы данных (поле формы SelectField) или добавить нового клиента в сплывающей форме а после его выбрать в поле выбора клиента. И если мы добавляем клиента через форму он в базе появляется, но в форму выбора подтягивается только после перезапуска сервера.
Код формы
class AddOrder(FlaskForm):
choices_client = [(client.id, (client.first_name, client.last_name, client.phone_number)
) for client in (db.session.query(Clients).all())]
client_id = SelectField('Выбрать Клиента', choices=choices_client)
name_order = StringField('Название заказа: ', validators=[DataRequired()])
stone = StringField('Камень: ', validators=[DataRequired()])
object_description = TextField ('Описание Обэкта: ', validators=[DataRequired()])
address = StringField('Адрес объекта: ', validators=[DataRequired()])
deadline = DateField('Дата Завершения(в формате - год-месяц-день) : ', format='%Y-%m-%d', validators=[DataRequired()])
submit = SubmitField('Отправить')
Обработка запроса с получение данных с БД
@app.route('/add_order', methods = ['GET', 'POST'])
@login_required
def add_order():
form_add_client = AddClient()
if form_add_client.is_submitted():
client = Clients(first_name=form_add_client.first_name.data, last_name=form_add_client.last_name.data, phone_number=form_add_client.phone.data)
db.session.add(client)
db.session.commit()
flash('Клиент добавлен в базу')
return redirect(url_for('add_order'))
form=AddOrder()
if form.is_submitted():
client_order=OrderClient(clients_id=form.client_id.data, title_order=form.name_order.data, title_stone=form.stone.data,
object_description=form.object_description.data, address=form.address.data,
deadline=form.deadline.data)
db.session.add(client_order)
db.session.commit()
flash('Заказ покупателя добавлен')
return redirect(url_for('index'))
return render_template("add_order.html", title='Создание заказа клиента', form=form, form_add_client=form_add_client)