मेरे पास काफी सरल क्वेरी है जिसे मैं ओआरएम के माध्यम से बनाना चाहता हूं, लेकिन यह पता नहीं लगा सकता है।
मेरे तीन मॉडल हैं:
स्थान (एक स्थान), विशेषता (एक स्थान हो सकता है), और रेटिंग (एक एम 2 एम) 'मॉडल के माध्यम से जिसमें एक स्कोर फ़ील्ड भी शामिल है)
मैं कुछ महत्वपूर्ण विशेषताओं को चुनना चाहता हूं और उन विशेषताओं के आधार पर अपने स्थानों को रैंक करने में सक्षम हूं - अर्थात सभी चयनित विशेषताओं पर बेहतर कुल स्कोर = बेहतर।
मैं निम्नलिखित एसक्यूएल का उपयोग कर सकता हूं जो मुझे चाहिए:
select location_id, sum(score)
from locations_rating
where attribute_id in (1,2,3)
group by location_id order by sum desc;
जो लौटता है
location_id | sum
-------------+-----
21 | 12
3 | 11
ORM के साथ मैं निकटतम हो सकता है:
Rating.objects.filter(
attribute__in=attributes).annotate(
acount=Count('location')).aggregate(Sum('score'))
जो लौटता है
{'score__sum': 23}
अर्थात सभी का योग, स्थान द्वारा समूहीकृत नहीं।
इसके आसपास कोई रास्ता? मैं SQL को मैन्युअल रूप से निष्पादित कर सकता था, लेकिन चीजों को लगातार बनाए रखने के लिए ORM के माध्यम से जाना होगा।
धन्यवाद