Fix API and admin for location2025
This commit is contained in:
44
rog/views.py
44
rog/views.py
@ -24,7 +24,7 @@ import uuid
|
||||
from rest_framework.exceptions import ValidationError as DRFValidationError
|
||||
|
||||
from django.db import transaction
|
||||
from django.db.models import F,Sum
|
||||
from django.db.models import F,Sum,Q
|
||||
from rest_framework import viewsets, permissions, status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
@ -239,17 +239,49 @@ class NewEvent2Admin(admin.ModelAdmin):
|
||||
class LocationViewSet(viewsets.ModelViewSet):
|
||||
queryset=Location2025.objects.all()
|
||||
serializer_class=LocationSerializer
|
||||
filter_fields=["prefecture", "location_name"]
|
||||
filter_fields=[
|
||||
"event", "cp_name", "subcategory", "sub_loc_id",
|
||||
"is_active", "hidden_location", "evaluation_value"
|
||||
]
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = Location2025.objects.all()
|
||||
|
||||
# リクエストパラメータの確認
|
||||
group_filter = self.request.query_params.get('group__contains')
|
||||
event_filter = self.request.query_params.get('event')
|
||||
subcategory_filter = self.request.query_params.get('subcategory')
|
||||
has_photos_filter = self.request.query_params.get('has_photos')
|
||||
has_videos_filter = self.request.query_params.get('has_videos')
|
||||
tags_filter = self.request.query_params.get('tags__contains')
|
||||
evaluation_filter = self.request.query_params.get('evaluation_value')
|
||||
hidden_filter = self.request.query_params.get('hidden_location')
|
||||
|
||||
if group_filter:
|
||||
# フィルタの適用
|
||||
queryset = queryset.filter(group__contains=group_filter)
|
||||
if event_filter:
|
||||
queryset = queryset.filter(event_id=event_filter)
|
||||
|
||||
if subcategory_filter:
|
||||
queryset = queryset.filter(subcategory__icontains=subcategory_filter)
|
||||
|
||||
if has_photos_filter == 'true':
|
||||
queryset = queryset.exclude(photos__isnull=True).exclude(photos='')
|
||||
elif has_photos_filter == 'false':
|
||||
queryset = queryset.filter(Q(photos__isnull=True) | Q(photos=''))
|
||||
|
||||
if has_videos_filter == 'true':
|
||||
queryset = queryset.exclude(videos__isnull=True).exclude(videos='')
|
||||
elif has_videos_filter == 'false':
|
||||
queryset = queryset.filter(Q(videos__isnull=True) | Q(videos=''))
|
||||
|
||||
if tags_filter:
|
||||
queryset = queryset.filter(tags__icontains=tags_filter)
|
||||
|
||||
if evaluation_filter:
|
||||
queryset = queryset.filter(evaluation_value=evaluation_filter)
|
||||
|
||||
if hidden_filter == 'true':
|
||||
queryset = queryset.filter(hidden_location=True)
|
||||
elif hidden_filter == 'false':
|
||||
queryset = queryset.filter(hidden_location=False)
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
Reference in New Issue
Block a user