#!/usr/bin/env python3 import os import sys import django # プロジェクト設定 sys.path.append('/app') os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') django.setup() from rog.models import Entry, Team, NewEvent2, Member from django.db.models import Q import logging # ログ設定 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def analyze_fc_gifu_data(): """FC岐阜関連のイベント・チーム・エントリーデータを詳細分析""" print("=== FC岐阜イベント・データ詳細分析 ===") # 1. FC岐阜関連イベントを検索 print("\n1. FC岐阜関連イベント検索:") fc_events = NewEvent2.objects.filter( Q(event_name__icontains='FC岐阜') | Q(event_name__icontains='fc岐阜') | Q(event_name__icontains='岐阜') ) if fc_events.exists(): for event in fc_events: print(f" - ID:{event.id}, Name:{event.event_name}, Date:{event.event_day}") # イベントに関連するエントリーを確認 entries = Entry.objects.filter(event=event) print(f" 関連エントリー数: {entries.count()}") # エントリーのチーム情報を表示 if entries.exists(): print(" エントリー詳細:") for entry in entries[:10]: # 最初の10件のみ表示 team = entry.team print(f" Entry ID:{entry.id}, Team ID:{team.id}, Team Name:{team.name}, Zekken:{team.zekken_number}") # イベントに関連するチームを直接検索 teams = Team.objects.filter(event=event) print(f" 関連チーム数: {teams.count()}") if teams.exists(): print(" チーム詳細:") for team in teams[:10]: # 最初の10件のみ表示 print(f" Team ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}") else: print(" FC岐阜関連イベントが見つかりません") # 2. 全イベント一覧を確認 print("\n2. 全イベント一覧:") all_events = NewEvent2.objects.all() for event in all_events: entry_count = Entry.objects.filter(event=event).count() team_count = Team.objects.filter(event=event).count() print(f" - ID:{event.id}, Name:{event.event_name}, Date:{event.event_day}, Entry:{entry_count}, Team:{team_count}") # 3. ゼッケン番号が設定されているチームを確認 print("\n3. ゼッケン番号付きチーム:") teams_with_zekken = Team.objects.exclude(zekken_number__isnull=True).exclude(zekken_number='') print(f" ゼッケン番号付きチーム数: {teams_with_zekken.count()}") if teams_with_zekken.exists(): print(" サンプル:") for team in teams_with_zekken[:10]: print(f" ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}, Event:{team.event.event_name if team.event else 'None'}") # 4. 特定のイベントID(仮に100とする)を詳細調査 print("\n4. イベントID 100 詳細調査:") try: event_100 = NewEvent2.objects.get(id=100) print(f" イベント: {event_100.event_name} ({event_100.event_day})") # エントリー確認 entries_100 = Entry.objects.filter(event=event_100) print(f" エントリー数: {entries_100.count()}") # チーム確認 teams_100 = Team.objects.filter(event=event_100) print(f" チーム数: {teams_100.count()}") # ゼッケン番号付きチーム確認 teams_100_with_zekken = teams_100.exclude(zekken_number__isnull=True).exclude(zekken_number='') print(f" ゼッケン番号付きチーム数: {teams_100_with_zekken.count()}") if teams_100_with_zekken.exists(): print(" ゼッケン番号付きチーム:") for team in teams_100_with_zekken: print(f" ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}") except NewEvent2.DoesNotExist: print(" イベントID 100は存在しません") # 5. Entryテーブルとチームの関係確認 print("\n5. Entry-Team関係確認:") total_entries = Entry.objects.all().count() entries_with_teams = Entry.objects.exclude(team__isnull=True).count() print(f" 総エントリー数: {total_entries}") print(f" チーム関連付けありエントリー数: {entries_with_teams}") # サンプルエントリーの詳細 print(" サンプルエントリー詳細:") sample_entries = Entry.objects.all()[:5] for entry in sample_entries: team = entry.team event = entry.event print(f" Entry ID:{entry.id}, Team:{team.name if team else 'None'}({team.id if team else 'None'}), Event:{event.event_name if event else 'None'}({event.id if event else 'None'})") if team: print(f" Team Zekken:{team.zekken_number}, Team Event:{team.event.event_name if team.event else 'None'}") if __name__ == "__main__": try: analyze_fc_gifu_data() except Exception as e: print(f"❌ エラーが発生しました: {e}") import traceback traceback.print_exc()