PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menggunakan subquery di Django?

Ini mungkin bukan yang Anda cari, tetapi mungkin membuat Anda lebih dekat. Lihat anotasi Django .

Berikut adalah contoh sesuatu yang dapat membantu:

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

Ini akan memberi Anda daftar model pelanggan Anda yang masing-masing akan memiliki atribut baru yang disebut "pembelian_paling_baru" dan akan berisi tanggal saat mereka melakukan pembelian terakhir mereka. sql yang dihasilkan terlihat seperti ini:

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"

Opsi lain, adalah menambahkan properti ke model pelanggan Anda yang akan terlihat seperti ini:

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

Anda jelas harus menangani kasus di mana tidak ada pembelian di properti ini, dan ini berpotensi tidak berjalan dengan baik (karena Anda akan menjalankan satu kueri untuk setiap pelanggan untuk mendapatkan pembelian terbaru mereka).

Saya telah menggunakan kedua teknik ini di masa lalu dan keduanya bekerja dengan baik dalam situasi yang berbeda. Semoga membantu. Semoga berhasil!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana to_char() Bekerja di PostgreSQL

  2. PostgreSQL:Bagaimana cara mengindeks semua kunci asing?

  3. bagaimana cara mengubah port mendengarkan postgresql di windows?

  4. Menambahkan 'serial' ke kolom yang ada di Postgres

  5. Memulai Dengan Postgres 13 di Ubuntu 20.04