utility.execute() File “/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py”, line 436, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File “/usr/local/lib/python3.10/dist-packages/django/core/management/base.py”, line 413, in run_from_argv self.execute(*args, **cmd_options) File “/usr/local/lib/python3.10/dist-packages/django/core/management/base.py”, line 459, in execute output = self.handle(*args, **options) File “/home/NBSystem/value_search/management/commands/value_adjust.py”, line 78, in handle raise e File “/home/NBSystem/value_search/management/commands/value_adjust.py”, line 69, in handle main() File “/home/NBSystem/value_search/management/commands/value_adjust.py”, line 40, in main ).first() File “/usr/local/lib/python3.10/dist-packages/django/db/models/query.py”, line 1095, in first self._check_ordering_first_last_queryset_aggregation(method=”first”) File “/usr/local/lib/python3.10/dist-packages/django/db/models/query.py”, line 2020, in _check_ordering_first_last_queryset_aggregation raise TypeError( TypeError: Cannot use QuerySet.first() on an unordered queryset performing aggregation. Add an ordering with order_by(). root@531a0c7c5e99:/home/NBSystem#

エラーが発生しました。このエラーは、クエリセットが集計を行っている間に順序付けされていないため、first()メソッドを使用できないことが原因です。first()メソッドを使用する前に、order_by()メソッドを使用してクエリセットを順序付けする必要があります。

修正方法として、second_min_price_recordsのクエリセットを以下のように変更します:

python
second_min_price_records = [] for record in min_price_records: # 最安値でないレコードをフィルタリング second_min_price_record = RakutenPriceSearch.objects.filter( original_product_code=record['original_product_code'] ).exclude(itemPriceMin1=record['min_price']).values( 'original_product_code' ).annotate( second_min_price=Min('itemPriceMin1'), second_shopCode=Min('shopCode') ).order_by('second_min_price').first() # レコードが見つかった場合にリストに追加 if second_min_price_record: second_min_price_records.append(second_min_price_record)

この変更により、second_min_price_recordsのクエリセットが順序付けされ、first()メソッドが適用可能になります。

未分類

Posted by ぼっち