Fix Location2025 search feature..
This commit is contained in:
85
debug_test_event.py
Normal file
85
debug_test_event.py
Normal file
@ -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()
|
||||
@ -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()
|
||||
|
||||
Reference in New Issue
Block a user