diff --git a/rog/views.py b/rog/views.py index d9e5f62..67a87a8 100755 --- a/rog/views.py +++ b/rog/views.py @@ -2535,7 +2535,28 @@ def get_zekken_numbers(request, event_code): @api_view(['GET']) def get_team_info(request, zekken_number): - entry = Entry.objects.select_related('team','event').get(zekken_number=zekken_number) + # zekken_numberまたはzekken_labelで検索を試行 + entry = None + try: + # まずzekken_numberで検索(数値の場合) + if zekken_number.isdigit(): + entry = Entry.objects.select_related('team','event').get(zekken_number=int(zekken_number)) + else: + # 数値でない場合はzekken_labelで検索 + entry = Entry.objects.select_related('team','event').get(zekken_label=zekken_number) + except Entry.DoesNotExist: + # zekken_numberで見つからない場合はzekken_labelで再試行 + try: + entry = Entry.objects.select_related('team','event').get(zekken_label=zekken_number) + except Entry.DoesNotExist: + # 最後にzekken_numberとして再試行(数値以外でもエラーハンドリング) + try: + entry = Entry.objects.select_related('team','event').get(zekken_number=zekken_number) + except (Entry.DoesNotExist, ValueError): + return Response({'error': 'Entry not found'}, status=404) + + if not entry: + return Response({'error': 'Entry not found'}, status=404) members = Member.objects.filter(team=entry.team) start_datetime = entry.event.start_datetime #イベントの規定スタート時刻