2011-10-08 13 views
5

मैं एक वर्ग है:पायथन/स्क्लाक्लेमी - विदेशी कुंजी अपडेट होने पर लोड रिलेशनशिप?

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 

लेकिन chart.element element_id सेट करने के बाद कोई भी है। फ्लश/प्रतिबद्ध होने से पहले नई वस्तु के लिए इस संबंध को स्वत: लोड करने का कोई तरीका है?

उत्तर

5

सबसे अच्छा विकल्प

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

संबंध जहाज असाइन प्रत्यक्ष वस्तु है। यदि आप element_id असाइन करते हैं तो जब तक यह फ्लश न हो जाए तो यह स्मृति में होगा। आंतरिक रूप से यह एक प्रश्न SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id आग करेगा लेकिन वह element_id डेटा स्टोर नहीं है या यह स्मृति में होगा।

तो यदि आप फ्लश नहीं करना चाहते हैं तो मैं प्रत्यक्ष असाइन ऑब्जेक्ट का सुझाव देता हूं।

आशा यह आप में मदद मिलेगी।

+1

प्रतिक्रिया के लिए धन्यवाद। मैं अब इस तरह से उपयोग कर रहा हूँ। मेरा फ़ंक्शन element_id प्राप्त करता है, और मुझे इसे चार्ट ऑब्जेक्ट में सेट करने के लिए तत्व मिलता है (फ़्लश आंतरिक रूप से किया जाता है)। ऐसा लगता है कि यह एकमात्र तरीका है। – Victor

संबंधित मुद्दे