и мой проект работал так же.

я есть сайт, работающий с базой данных mysql с использованием пакета sql-alchemy, который внезапно сломался. Я провел некоторое исследование и обнаружил, что ожидаемая проблема заключается в том, что новейшее обновление sql-alchemy передает flask-admin еще одно значение, чем ожидалось от

"cls, key = identity_key(instance=obj)"


Источник

Предлагаемое исправление состоит в том, чтобы отредактировать файлы, чтобы принять третий элемент, но я не могу сделать это с разрешениями, которые у меня есть в моей среде.

Другой ответ связан с репозиторием на github, но я не могу понять, как это мне помогает. Я очень новичок в этом, и я не знаю, должен ли я клонировать репо или как именно это сделать, если я это сделаю.

Любая помощь приветствуется!

Вот дамп ошибки

2018-01-22 20: 01: 59,593: [2018-01-22 20: 01: 59,592] ОШИБКА в приложении: исключение при / резервировании / добавлении [GET]
2018-01-22 20: 01: 59,594: обратная связь (последний вызов был последним):
2018-01-22 20: 01: 59,594:
Файл "fakepath / flask / app.py", строка 1982, в wsgi_app
2018-01-22 20: 01: 59,594: response = self.full_dispatch_request () 2018-01-22 20: 01: 59,594: Файл "fakepath / flask / app.py", строка 1614, в full_dispatch_request
2018-01-22 20: 01: 59,594: rv = self.handle_user_exception (e)
2018-01-22 20: 01: 59 595: файл "fakepath / flask / app.py", строка 1517, в handle_user_exception2018-01-22 20: 01: 59 595: ререйз (exc_type, exc_value, tb) 2018-01-22 20: 01: 59,595: файл "fakepath / flask / _compat.py", строка 33, в ререйзе
2018-01-22 20: 01: 59 595: повышение значения2018-01-22 20: 01: 59 595: файл "fakepath / flask / app.py", строка 1612, в full_dispatch_request
2018-01-22 20: 01: 59,595: rv = self.dispatch_request ()
2018-01-22 20: 01: 59,596: файл "fakepath / flask / app.py", строка 1598, в dispatch_request2018-01-22 20: 01: 59,596: вернуть self.view_functionsrule.endpoint
2018-01-22 20: 01: 59,596: Файл "fakepath / flask_login / utils.py", строка 261, в decor_view
2018-01-22 20: 01: 59,596: функция возврата (* args, ** kwargs)
2018-01-22 20: 01: 59,597: Файл "/home/apoalphagammawebmaster/inventory/app/auth/views.py", строка 248, в add_reservation
2018-01-22 20: 01: 59 597: форма = форма, название = «Добавить бронирование»)
2018-01-22 20: 01: 59,597: файл "fakepath / flask / templating.py", строка 134, в render_template2018-01-22 20: 01: 59,597: context, ctx.app)
2018-01-22 20: 01: 59,597: Файл "fakepath / flask / templating.py", строка 116, в _render
2018-01-22 20: 01: 59,597: rv = template.render (контекст)
2018-01-22 20: 01: 59,598: Файл "fakepath / jinja2 / asyncsupport.py", строка 76, в рендере
2018-01-22 20: 01: 59,598: вернуть original_render (self, * args, ** kwargs) 2018-01-22 20: 01: 59,598: файл "fakepath / jinja2 / environment.py", строка 1008, в рендере
2018-01-22 20: 01: 59,598: вернуть self.environment.handle_exception (exc_info, True)
2018-01-22 20: 01: 59,598: Файл "fakepath / jinja2 / environment.py", строка 780, в handle_exception
2018-01-22 20: 01: 59 599: ререйз (exc_type, exc_value, tb)
2018-01-22 20: 01: 59 599: Файл "fakepath / jinja2 / _compat.py", строка 37, в ререйзе
2018-01-22 20: 01: 59 599: повышение значения.with_traceback (tb)
2018-01-22 20: 01: 59 599: Файл "/home/apoalphagammawebmaster/inventory/app/templates/auth/reservations/reservation.html", строка 2, в коде шаблона верхнего уровня
2018-01-22 20: 01: 59,599:
{% extends "base.html"%}
2018-01-22 20: 01: 59 599: Файл "/home/apoalphagammawebmaster/inventory/app/templates/base.html", строка 48, в коде шаблона верхнего уровня
2018-01-22 20: 01: 59 600: {% блока тела%}
2018-01-22 20: 01: 59 600: файл "/home/apoalphagammawebmaster/inventory/app/templates/auth/reservations/reservation.html", строка 27, в блоке "body"
2018-01-22 20: 01: 59,600: {{wtf.quick_form (форма)}}
2018-01-22 20: 01: 59,600: Файл "fakepath / jinja2 / runtime.py", строка 579, в _invoke
2018-01-22 20: 01: 59,600: rv = self._func (* аргументы)
2018-01-22 20: 01: 59,601: Файл "fakepath / flask_bootstrap / templates / bootstrap / wtf.html", строка 205, в шаблоне
2018-01-22 20: 01: 59,601: {{form_field (field, 2018-01-22 20: 01: 59,601: файл "fakepath / jinja2 / runtime.py", строка 579, в _invoke
2018-01-22 20: 01: 59,601: rv = self._func (* аргументы)
2018-01-22 20: 01: 59,601: Файл "fakepath / flask_bootstrap / templates / bootstrap / wtf.html", строка 123, в шаблоне
2018-01-22 20: 01: 59,601:
{{field (class = "form-control", ** kwargs) | safe}}
2018-01-22 20: 01: 59,601: Файл "fakepath / wtforms / fields / core.py", строка 153, ввызов
2018-01-22 20: 01: 59,601: возвращение self.meta.render_field (self, kwargs)
2018-01-22 20: 01: 59,602:
Файл "fakepath / wtforms / meta.py", строка 56, в render_field2018-01-22 20: 01: 59,602: вернуть field.widget (field, ** render_kw)
2018-01-22 20: 01: 59,602: Файл "fakepath / wtforms / widgets / core.py", строка 287, ввызов2018-01-22 20: 01: 59,602: для val, метка, выбранная в field.iter_choices ():
2018-01-22 20: 01: 59,602: Файл "fakepath / wtforms / ext / sqlalchemy / fields.py", строка 107, в iter_choices
2018-01-22 20: 01: 59,602: для pk, obj в self._get_object_list ():
2018-01-22 20: 01: 59,602: Файл "fakepath / wtforms / ext / sqlalchemy / fields.py", строка 100, в _get_object_list
2018-01-22 20: 01: 59,602: self._object_list = list ((text_type (get_pk (obj)), obj) для obj в запросе)
2018-01-22 20: 01: 59,603: Файл "fakepath / wtforms / ext / sqlalchemy / fields.py", строка 100, в
2018-01-22 20: 01: 59,603: self._object_list = list ((text_type (get_pk (obj)), obj) для obj в запросе)
2018-01-22 20: 01: 59,603: Файл "fakepath / wtforms / ext / sqlalchemy / fields.py", строка 189, в get_pk_from_identity
2018-01-22 20: 01: 59,603: cls, key = identity_key (instance = obj)
2018-01-22 20: 01: 59,603: ValueError: слишком много значений для распаковки (ожидается 2)

Ответы на вопрос(2)

Ваш ответ на вопрос