#python #orm #sqlalchemy
#python #orm #sqlalchemy
Вопрос:
У меня есть класс:
class Chart(Base):
__tablename__ = 'chart'
id = C('chart_id', Integer, primary_key=True)
element_id = C(Integer, ForeignKey('element.element_id'))
element = relationship(Element)
name = C(String)
def __init__(self, name):
self.name = name
Использование довольно распространенное,
chart = Chart('Some name')
chart.element_id = element_id
Но после установки element_id значение chart.element равно None. Есть ли какой-либо способ автоматической загрузки этого отношения для нового объекта перед сбросом / фиксацией?
Ответ №1:
Лучший вариант
chart = Chart('Some name')
chart.element = element
Назначьте прямой объект для корабля отношений. Если вы назначаете element_id
, то до тех пор, пока он не очистится, он будет находиться в памяти. Внутренне он запустит запрос SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id
, но данные element_id не сохраняются или они будут в памяти.
Поэтому я предлагаю прямое назначение объекта, если вы не хотите сбрасывать.
Надеюсь, это вам поможет.
Комментарии:
1. Спасибо за ответ. Сейчас я использую этот способ. Моя функция получает element_id, и я сам получаю элемент, чтобы установить его в объект диаграммы (сброс выполняется внутренне). Похоже, это единственный способ.