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

Django:cách lấy order_detail_data theo order_id

Nếu bạn đang sử dụng các truy vấn thô, thì bạn chỉ cần hợp nhất dữ liệu. Một cái gì đó như thế này sẽ hoạt động,

def merge_order_data_and_detail(orders, details):
  """Group details by order_id and merge it in orders."""
  # create dictionary key:order_id value:[order_detail_data]
  dic = {}
  for d in details:
    if d['order_id'] not in dic:
      dic[d['order_id']] = []
    dic[d['order_id']].append(d)
  # iterate orders and add details
  for o in orders:
    if o['order_id'] in dic:
      o['order_detail_data'] = dic[o['order_id']]

orders = [
  {
      "order_id": 1,
      "user_id": 5
  },
  {
      "order_id": 2,
      "user_id": 50
  }    
]
details = [
  {
      "order_detail_id": 1,
      "order_id": 1,
      "user_id": 5,
      "product_id": 202
  },
  {
      "order_detail_id": 2,
      "order_id": 1,
      "user_id": 5,
      "product_id": 203
  },
  {
      "order_detail_id": 3,
      "order_id": 2,
      "user_id": 50,
      "product_id": 402
  },
  {
      "order_detail_id": 4,
      "order_id": 2,
      "user_id": 50,
      "product_id": 403
  }
]
merge_order_data_and_detail(orders, details)
print(orders)

Kết quả:

[{'order_id': 1, 'user_id': 5, 'order_detail_data': [{'order_detail_id': 1, 'order_id': 1, 'user_id': 5, 'product_id': 202}, {'order_detail_id': 2, 'order_id': 1, 'user_id': 5, 'product_id': 203}]}, {'order_id': 2, 'user_id': 50, 'order_detail_data': [{'order_detail_id': 3, 'order_id': 2, 'user_id': 50, 'product_id': 402}, {'order_detail_id': 4, 'order_id': 
2, 'user_id': 50, 'product_id': 403}]}]

Tôi xóa rất nhiều đơn đặt hàng và thuộc tính chi tiết chỉ để làm cho việc kiểm tra đơn giản.

Tôi không có toàn bộ bức tranh, nhưng nên nghĩ đến việc sử dụng các mô hình Django nếu bạn chưa sử dụng nó. Đó là cách để tận dụng toàn bộ tiềm năng của khuôn khổ.

Hy vọng nó sẽ hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. có giới hạn kích thước tệp khi tạo tệp csv bằng php và mysql không?

  2. chèn tốc độ trong mysql vs cassandra

  3. Không thể cài đặt MySQL Server 8.0.17 với Lỗi “Không thể thực hiện hành động‘ Cài đặt ’cho sản phẩm‘ MySQL Server 8.0.17 ’”

  4. MySQL Lỗi nghiêm trọng:Không thể mở và khóa các bảng đặc quyền:Định dạng tệp 'người dùng' không chính xác

  5. Sự cố với truy vấn mysql phức tạp bằng cách sử dụng câu lệnh đã chuẩn bị