sql >> データベース >  >> RDS >> Mysql

Django:order_idに従ってorder_detail_dataを取得する方法

    生のクエリを使用している場合は、データをマージする必要があります。このようなものが機能するはずです、

    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)
    

    結果:

    [{'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}]}]
    

    テストを簡単にするために、多くの注文と詳細の属性を削除します。

    全体像はわかりませんが、まだ使用していない場合は、Djangoモデルの使用を検討する必要があります。これは、フレームワークの可能性を最大限に活用する方法です。

    お役に立てば幸いです。




    1. Slony-I2.0.xを最新バージョン2.1.xにアップグレードする

    2. MySQLの各グループで最後のレコードを取得する方法

    3. クエリの結果を単一の行として取得しますか?

    4. フロントエンドでのラジオボタンの作成(PHP)