#!/usr/bin/env python """ TestEventが検索でヒットしない問題のデバッグスクリプト Deploy先でこのスクリプトを実行してください 実行方法: docker compose exec app python debug_test_event.py """ import os import django # Django設定 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') django.setup() from rog.models import NewEvent2, Location2025 from django.db.models import Q def debug_test_event(): print("=== TestEvent検索問題デバッグ ===") # 1. 全イベント数 total_events = NewEvent2.objects.count() print(f"総イベント数: {total_events}") # 2. TestEventを含むイベントの検索(大文字小文字区別なし) test_events = NewEvent2.objects.filter(event_name__icontains='testevent') print(f"TestEventを含むイベント(大小文字無視): {test_events.count()}件") for event in test_events: print(f" - ID {event.id}: '{event.event_name}' (status: {event.status})") # 3. Testを含むイベントの検索 test_partial = NewEvent2.objects.filter(event_name__icontains='test') print(f"Testを含むイベント: {test_partial.count()}件") for event in test_partial: print(f" - ID {event.id}: '{event.event_name}' (status: {event.status})") # 4. 最近作成されたイベント(上位10件) print("\n=== 最近作成されたイベント(上位10件) ===") recent_events = NewEvent2.objects.order_by('-id')[:10] for event in recent_events: print(f" - ID {event.id}: '{event.event_name}' (status: {event.status})") # 5. 各種検索パターンテスト print("\n=== 各種検索パターンテスト ===") search_patterns = [ 'TestEvent', 'testevent', 'Test', 'test', 'EVENT', 'event' ] for pattern in search_patterns: results = NewEvent2.objects.filter(event_name__icontains=pattern) print(f"'{pattern}' を含むイベント: {results.count()}件") if results.count() > 0 and results.count() <= 3: for event in results: print(f" - '{event.event_name}'") # 6. ステータス別イベント数 print("\n=== ステータス別イベント数 ===") from django.db.models import Count status_counts = NewEvent2.objects.values('status').annotate(count=Count('id')).order_by('status') for item in status_counts: print(f" {item['status']}: {item['count']}件") # 7. 特定の文字列での完全一致検索 print("\n=== 完全一致検索テスト ===") exact_match = NewEvent2.objects.filter(event_name='TestEvent') print(f"'TestEvent'完全一致: {exact_match.count()}件") if exact_match.exists(): for event in exact_match: print(f" - ID {event.id}: '{event.event_name}' (status: {event.status})") # 関連するLocation2025も確認 cp_count = Location2025.objects.filter(event=event).count() print(f" 関連チェックポイント: {cp_count}件") if __name__ == '__main__': debug_test_event()