Я пытаюсь создать новый экземпляр класса внутри функции. Экземпляр создается впервые в первый раз, хотя, когда я пытаюсь создать дополнительный экземпляр (пересматривая маршрут), я возвращаю ссылку на исходный объект.Как заставить новый экземпляр класса SQLAlchemy
Это происходит из-за того, как я создал приложение. См упрощенного код ниже:
@tests.route('/generate_test/<t_type>', methods=['GET'])
def generate_test(t_type):
test_obj = t[t_type]['obj']
...
return test_obj
Где т представляет собой словарь, как показано ниже:
t = {
'footests': {'obj': FooTest(),
'name': 'Foo Test',
...
},
...
}
Поскольку существует много различных типов тестов, я надеялся, что я мог бы использовать этот метод, чтобы обеспечить все дополнительные детали которые связаны с определенным типом теста. Когда я первый сгенерирует новый тест, тест объект FooTest
является новым, то есть id = None
т.д.
Хотя, когда я пришел через второй раз и попытаться создать новый тест, экземпляр в словаре t
до сих пор ассоциируется с тест экземпляр с первого раза, то есть id = <id_from_last_time>
Я пытался вычеркнуть объект с помощью db_session.expunge(test_obj)
и del(test_obj)
(как в моем Flask
маршрута), хотя я все еще получаю ссылку на исходный объект.
Я хочу, чтобы словарь t
предоставил экземпляр нового объекта каждый раз, когда я его вызываю.