PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để sử dụng truy vấn con trong django?

Đây có thể không phải là chính xác những gì bạn đang tìm kiếm, nhưng nó có thể giúp bạn đến gần hơn. Hãy xem chú thích của Django .

Dưới đây là một ví dụ về điều gì đó có thể hữu ích:

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

Điều này sẽ cung cấp cho bạn danh sách các mô hình khách hàng của bạn, mỗi mô hình sẽ có một thuộc tính mới gọi là "most_recent_purchase" và sẽ chứa ngày họ thực hiện lần mua hàng cuối cùng. Sql được tạo ra trông giống như sau:

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"

Một tùy chọn khác, sẽ là thêm một thuộc tính vào mô hình khách hàng của bạn trông giống như sau:

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

Rõ ràng bạn sẽ cần phải xử lý trường hợp không có bất kỳ giao dịch mua nào trong sản phẩm này và điều này có khả năng không hoạt động tốt (vì bạn sẽ chạy một truy vấn cho mỗi khách hàng để nhận được giao dịch mua mới nhất của họ).

Tôi đã sử dụng cả hai kỹ thuật này trong quá khứ và cả hai đều hoạt động tốt trong các tình huống khác nhau. Tôi hi vọng cái này giúp được. Chúc bạn may mắn!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bỏ một cơ sở dữ liệu đang được người dùng khác truy cập?

  2. Khởi động ứng dụng Spring Boot rất chậm

  3. Truy vấn ứng dụng khách Vertx JDBCWithParams - làm cách nào để thêm danh sách?

  4. Làm cách nào để chèn JSONB vào Postgresql bằng Python?

  5. Cách thực thi các tệp truy vấn sql qua RPostgreSQL