2011-10-08 14 views
5

Mam klasy:Python/SQLAlchemy - relacja obciążenia po zaktualizowaniu klucza obcego?

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 

Wykorzystanie jest dość powszechne,

chart = Chart('Some name') 
chart.element_id = element_id 

Ale chart.element jest None po ustawieniu element_id. Czy istnieje sposób automatycznego załadowania tej relacji dla nowego obiektu przed opróżnieniem/zatwierdzeniem?

Odpowiedz

5

Najlepszym rozwiązaniem jest

chart = Chart('Some name') 
chart.element = element 

Przypisywanie bezpośredni przedmiot na statek relacji. Jeśli zostanie przypisany element_id, a następnie do czasu opróżnienia, będzie w pamięci. Wewnętrznie wystrzeliwuje zapytanie SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id, ale dane elementu id elementu nie są przechowywane lub będą w pamięci.

Proponuję więc bezpośredni przypisać obiekt, jeśli nie chcesz spłukiwać.

Mam nadzieję, że to ci pomoże.

+1

Dzięki za odpowiedź. Używam teraz tej metody. Moja funkcja otrzymuje element element id i otrzymuję element sam, aby ustawić go w obiekcie wykresu (spłukiwanie odbywa się wewnętrznie). Wygląda na to, że to jedyny sposób. – Victor

Powiązane problemy