python - Saving Peewee queries with multiple foreign key relationships against the same table -
मेरे पास निम्न पीईवी पोस्टग्रेएसक्यूएल मॉडल है:
क्लास गेम (मॉडल): क्लास मेटा : डेटाबेस = डीबी db_table = 'd_games' game_id =) प्राथमिक कुंजीफील्ड () स्थान = चरफिल्ड () home_team = विदेशी केफीफ्रंट (टीम, संबंधित_नाम = 'होम_गेम') दूर_टेम = विदेशी केफीफ़ील्ड (टीम, संबंधित_नाम = 'दूर_गेम')
आप देख सकते हैं कि मॉडल के दो विदेशी कुंजी रिश्ते टीम मॉडल के साथ हैं
मैं कुछ ऐसा करना चाहता हूं:
गेम्स = गेम.सेक्ट (गेम, टीम) .जोइंड (टीम)। गेम्स में छ के लिए (10) खेलें: print '% S बनाम% s'% (g.home_team.team_name, g.away_team.team_name)
दुर्भाग्य से, जबकि home_team
संबंध में सहेजा जाता है आरंभिक क्वेरी:
# क्वेरी लॉग से "चयन करें t1।" Game_id ", t1।" Game_date ", t1।" स्थान ", t1।" Home_team_id ", t1।" Away_team_id ", टी 2। "टीम_आईड", टी 2। "टीम_नाम" से "d_games" एएस टी 1 इनर जॉइन "डी_टेम" एएस टी 2 ऑन (टी 1। "होम_टेम_आईडी" = टी 2। "टीम_आईड") LIMIT 10
<पी > दूर_टेम
संबंध नहीं है, इसलिए जब भी मैं g.away_team.team_name
प्रिंट करने का प्रयास करता हूं, एक नई क्वेरी निष्पादित हो रही है। कैसे करें मैं इसे ठीक करता हूं ताकि दोनों home_team
और दूर_टाम
संबंधों को बचाया जा सके? मैंने कोशिश की
गेम्स = गेम.सेक्ट (गेम, टीम, टीम) .जोइंड (टीम)। स्विच (गेम) .जोइंड (टीम) .मिलीट (10)
लेकिन यह मुझे एक तालिका नाम "t2" देता है एक बार से अधिक निर्दिष्ट
त्रुटि, जैसा कि पेईवी ने निष्पादित करने की कोशिश की है
'SELECT t1 "Game_id", t1। "Game_date", t1। "स्थान", t1। "Home_team_id", t1। "Away_team_id", टी 2। "टीम_आड", टी 2। "टीम_नाम", टी 2। "टीम_आईड", टी 2। " Team_name "FROM" d_games "एएस टी 1 इनर जॉइन" डी_टेम "एएस टी 2 ऑन (टी 1।" होम_टेम_आईडी "= टी 2।" टीम_आईड ") इनर जॉइन" डी_टेम "एएस टी 2 ऑन (टी 1।" होम_टेम_आईडी "= टी 2।" टीम_आईडी ") LIMIT 10
आपको Model.alias () इन परिस्थितियों में यहां एक उदाहरण है:
< P> कौन सा परिणाम होमटैम = टीम.लिअस () दूर = टीम.लिअस () क्वेरी = (गेम। चयन करें (गेम, होमटैम, ऐवेटेम) .जोइंड करें (होमटैम, पर = ( Game.home_team == HomeTeam.id))। स्विच (गेम) .जोइंड (ऐवेटेम, पर = (Game.away_team == AwayTeam.id)) .order_by (Game.id))
SELECT t1। "Id", t1। "स्थान", t1। "Home_team_id", t1। "Away_team_id", t2। "Id", t2। "Name "टी 3।" आईडी ", टी 3।" नाम "से" d_games "एएस टी 1 इनर जॉइन" टीम "एएस टी 2 ऑन (टी 1।" होम_टेम_आईडी "= टी 2।" आईडी ") इनर जॉइन" टीम "एएस टी 3 एन (टी 1 "Away_team_id" = t3। "Id") आदेश द्वारा टी 1। "आईडी
तब:
खेल के लिए क्वेरी में: print game.home_team नाम, game.away_team.name
Comments
Post a Comment