Ошибка привязки параметра 4 - возможно, неподдерживаемый тип - Как мне добавить список словаря? - PullRequest
0 голосов
/ 20 октября 2019

Я не уверен, какая часть кода дает мне ошибку интерфейса. Любая помощь приветствуется. Это то, что вставляется, что не проходит через правильно:

[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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...