Я не уверен, какая часть кода дает мне ошибку интерфейса. Любая помощь приветствуется. Это то, что вставляется, что не проходит через правильно:
[SQL: INSERT INTO минуты (club_id, дата, время, местоположение, покупка, движение покупки, сбор средств, движение денег, минуты) ЗНАЧЕНИЯ (? ,?,?,?,?,?,?,?,?)] [параметры: (2, '2019-01-12', нет, '1234', [{'payable_to': 'имя', 'сумма':' 0.00 ',' расход ':' l; kajdfl; kad '}], {' motionedby ':' name ',' secondby ':' name ',' numfor ': 2,' numagainst ': 2},[], {'motionedby': '', 'secondby': '', 'numfor': нет, 'numagainst': нет}, 'hiihiiiiiiiiiiiiiii')] (Справочная информация по этой ошибке: http://sqlalche.me/e/rvf5)
Я полагаю, что проблема связана со списком словарей, который передается в базу данных, и я предполагаю, что это "неподдерживаемый тип". Как бы это исправить?
forms.py (сами формы)
class PurchaseOrderForms(FlaskForm):
payable_to = StringField('Payable To')
amount = StringField('Amount',
render_kw={"placeholder":"00.00"})
expenditure = StringField('Purpose of Expenditure',
render_kw={"placeholder":"Expenditure"})
class FundraiserForms(FlaskForm):
descript = StringField('Fundraiser Description',
validators=[Optional()])
proposeddate = StringField('Proposed Date (dd/mm/year)',
validators=[Optional()])
expenditure = StringField('Purpose of Expenditure',
validators=[Optional()],
render_kw={"placeholder":"Expenditure"})
class MotionForms(FlaskForm):
motionedby = StringField('Motioned By',
validators=[Optional()],
render_kw={"placeholder":"Name"})
secondby = StringField('Seconded By',
validators=[Optional()],
render_kw={"placeholder":"Name"})
numfor = IntegerField('Number For',
validators=[Optional()],
render_kw={"placeholder":"#"})
numagainst = IntegerField('Number Against',
validators=[Optional()],
render_kw={"placeholder":"#"})
def create_club_minutes_form(club, purchase, fund):
num_members = len(club.members)
class ClubMinutesForm(FlaskForm):
date = DateField('Meeting Date (mm/dd/year)',
validators=[DataRequired(), DateRange(max = date.today())],
format = '%m/%d/%Y')
time = TimeField('Meeting Called to Order at')
location = StringField('Meeting Place',
validators=[DataRequired()],
render_kw={"placeholder":"Room # or Area"})
attendance = FieldList(BooleanField('Here'),
min_entries=num_members,
max_entries=num_members)
purchaseform = FieldList(FormField(PurchaseOrderForms),
min_entries=purchase,
max_entries=purchase)
purchasevote = FormField(MotionForms)
fundform = FieldList(FormField(FundraiserForms),
min_entries=fund,
max_entries=fund)
fundvote = FormField(MotionForms)
notes = TextAreaField('Overview of Meeting',
validators=[DataRequired(), Length(min=10, max=500)])
submit = SubmitField('Submit')
return ClubMinutesForm()
rout.py
@login_required
def record_club_minutes(user_id, club_id, purchase, fund):
user = User.query.get_or_404(user_id)
club = Club.query.get_or_404(club_id)
members = club.members
form = create_club_minutes_form(club, purchase, fund)
# form.purchaseform.entries = purchase
# form.fundform.entries = fund
if form.validate_on_submit():
minute = Minutes(club_id=club_id, date=form.date.data, time=form.time.data, location=form.location.data, purchase=form.purchaseform.data, purchasemotion=form.purchasevote.data, fundraiser=form.fundform.data, fundmotion=form.fundvote.data, minute=form.notes.data)
db.session.add(minute)
for index, field in enumerate(form.attendance):
attendance = Attendance(student_name=members[index].firstname + ' ' + members[index].lastname, present=form.attendance[index].data, minutes_id=minute.id)
minute.attendance.append(attendance)
db.session.commit()
flash('Minutes successfully recorded', 'success')
return redirect(url_for('clubs.view_club_name', user_id=user.id))
return render_template('record_minutes.html', title='Record', form=form, user=user, club=club, members=members)