Self join with django ORM -
मेरे पास एक मॉडल है:
वर्ग ट्रेड्स (models.Model): userid = मॉडल पॉजिटिव इटेजरफिल्ड (रिक्त = सच = db_index = true) positionid = models.PositiveIntegerField (db_index = True) tradeid = मॉडल। PositiveIntegerField (db_index = True) orderid = models.PositiveIntegerField (db_index = True) ...
और मैं अगले क्वेरी निष्पादित करना चाहता हूं:
ट्रेडों से * चुनें * आंतरिक इन ट्रेडों में टी 2 ऑन टी 2.ट्रैडीड = टी 1। पॉजिटिड और टी 1.ट्रैडीड = टी 2.positionid क्या यह हैक के बिना Django ORM का उपयोग किया जा सकता है? Thx!
चुनें * ... अधिक काम करेगा। यदि आप दाहिने हाथ से कॉलम वापस चाहते हैं, तो
table = SomeModel._meta.db_table join_column_1 = कुछModel._meta.get_field ('field1')। कॉलम join_column_2 = SomeModel._meta .get_field ('field2')। Column join_queryset = someModel.objects.filter () # क्वेरी के बल का मूल्यांकन querystr = join_queryset.query .__ str __ () # जोड़ें promot = true और nullable = बाएं बाहरी जुड़ने के लिए true rh_alias = join_queryset.query .जोड़ें ((तालिका, तालिका, join_column_1, join_column_2)) # दूसरे सशर्त और कॉलम में शामिल करें। Join_queryset = join_queryset.extra (select = dict (rhs_col1 = '% s।% S'% (rhs, join_column_2)), जहां = [ '% S।% S =% s।% S'% (तालिका, शामिल_संचय, rh_alias, join_column_1)])
चुनिंदा dict के लिए उपलब्ध अतिरिक्त कॉलम जोड़ें।
Comments
Post a Comment