PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Django में सबक्वायरी का उपयोग कैसे करें?

हो सकता है कि यह ठीक वैसा न हो जैसा आप ढूंढ रहे हैं, लेकिन यह आपको और करीब ले जा सकता है। Django's annotate पर एक नज़र डालें .

यहां कुछ ऐसा उदाहरण दिया गया है जो मदद कर सकता है:

  from django.db.models import Max
  Customer.objects.all().annotate(most_recent_purchase=Max('purchase__date'))

यह आपको आपके ग्राहक मॉडल की एक सूची देगा, जिनमें से प्रत्येक में "most_recent_purchase" नामक एक नई विशेषता होगी और इसमें वह तिथि होगी जिस दिन उन्होंने अपनी पिछली खरीदारी की थी। उत्पादित एसक्यूएल इस तरह दिखता है:

SELECT "demo_customer"."id", 
       "demo_customer"."user_id", 
       MAX("demo_purchase"."date") AS "most_recent_purchase"
FROM "demo_customer"
LEFT OUTER JOIN "demo_purchase" ON ("demo_customer"."id" = "demo_purchase"."customer_id")
GROUP BY "demo_customer"."id",
         "demo_customer"."user_id"

एक अन्य विकल्प, आपके ग्राहक मॉडल में एक संपत्ति जोड़ना होगा जो कुछ इस तरह दिखाई देगा:

  @property
  def latest_purchase(self):
    return self.purchase_set.order_by('-date')[0]

आपको स्पष्ट रूप से उस मामले को संभालने की आवश्यकता होगी जहां इस संपत्ति में कोई खरीद नहीं है, और यह संभावित रूप से बहुत अच्छा प्रदर्शन नहीं करेगा (क्योंकि आप प्रत्येक ग्राहक के लिए उनकी नवीनतम खरीदारी प्राप्त करने के लिए एक प्रश्न चला रहे होंगे)।

मैंने अतीत में इन दोनों तकनीकों का उपयोग किया है और इन दोनों ने अलग-अलग स्थितियों में ठीक काम किया है। आशा है कि ये आपकी मदद करेगा। शुभकामनाएँ!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ब्रिंक/नोड-पोस्टग्रेज के साथ पोस्टग्रेज में बल्क इंसर्ट

  2. PG::ForeignKeyViolation:ERROR:टेबल xxx पर अपडेट या डिलीट करना विदेशी कुंजी बाधा का उल्लंघन करता है

  3. रेल कार्यात्मक अनुक्रमणिका पोस्टग्रेज करता है

  4. मेरी पोस्टगिस ज्यामिति क्षेत्र पर सूचकांक का उपयोग क्यों नहीं करती है?

  5. क्या PostgreSQL VIEWS के विरुद्ध हर बार पूछे जाने पर नए बनाए जाते हैं?