diff --git a/debug_test_event.py b/debug_test_event.py new file mode 100644 index 0000000..f89b560 --- /dev/null +++ b/debug_test_event.py @@ -0,0 +1,85 @@ +#!/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() diff --git a/rog/admin.py b/rog/admin.py index eed014c..75db91a 100755 --- a/rog/admin.py +++ b/rog/admin.py @@ -854,7 +854,10 @@ class TempLocationAdmin(LeafletGeoAdmin): @admin.register(NewEvent2) class NewEvent2Admin(admin.ModelAdmin): - list_display = ['event_name', 'start_datetime', 'end_datetime', 'csv_upload_button'] + list_display = ['event_name', 'start_datetime', 'end_datetime', 'status', 'csv_upload_button'] + list_filter = ['status', 'start_datetime'] + search_fields = ['event_name', 'description'] # 検索フィールドを追加 + ordering = ['-start_datetime'] def get_urls(self): urls = super().get_urls()