У меня есть две формы здесь. Один для групп, а другой для продуктов. Когда пользователь создает новую группу для продуктов, она сохраняется в записи базы данных. Когда пользователи добавляют новый элемент в «Продукты», одним из вариантов выбора формы является выбор параметра из групп для категоризации элемента. Функция getGroups вызывает запись базы данных и, по выбору, в ProductForm.py отображает все доступные группы для категоризации создаваемого нового элемента. Пока это работает нормально, но всякий раз, когда пользователь создает новую группу, а затем пытается добавить новый продукт, мне приходится перезагружать сервер, чтобы отобразить параметр новой группы.
Я предполагаю, что маршруты предварительно загружают ProductForm, и поэтому getGroups () не вызывается для отображения новой записи, которая была добавлена. Как сделать так, чтобы мне не нужно было перезагружать сервер, когда пользователь создает новую группу, а SelectField правильно показывает новый элемент, который был добавлен в группу?
Routes.py
''' Routes - Product add '''
@app.route('/products/add', methods=['GET','POST'])
@login_required
def addItem():
form = ProductForm()
if form.validate_on_submit():
new_item = {
'id' : str(uid()),
'category' : form.category.data,
}
db.Products.insert_one(new_item)
flash('New Item Added.')
return redirect(url_for('products'))
return render_template('add-item.html', title='Add Item', form=form)
''' Routes - Groups '''
@app.route('/groups/add', methods=['GET','POST'])
@login_required
def groups_add():
form = GroupForm()
if form.validate_on_submit():
new_item = {
'id' : str(uid()),
'name' : form.name.data,
}
db.Groups.insert_one(new_item)
flash('New Group Added.')
return redirect(url_for('groups'))
return render_template('groups-add.html', title='Groups', form=form)
Forms.py
def getGroups():
groups = db.Groups.find()
size = groups.count() - 1
choices = []
while size >= 0:
choices.append((groups[size]['id'], groups[size]['name']))
size -= 1
if len(choices) == 0:
return [('none', 'None')]
return choices
class ProductForm(FlaskForm):
''' Product Items '''
category = SelectField('Category', choices=getGroups())