Django rest framwork фильтр по году или месяцу
Как фильтровать дату по году или месяцу в django rest framework
моя модель
class DailyJues(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
amount = models.IntegerField()
date = models.DateField(default=timezone.now)
мои взгляды
class DailyJuesViews(APIView):
def get(self, request):
daily_jues = DailyJues.objects.all()
serializer = DailyJuesSerializers(daily_jues, many=True)
return Response(serializer.data)
def post(self, request):
serializer = DailyJuesSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ну, вы можете фильтровать с помощью: DailyJues.objects.filter(date__year=2022)
& DailyJues.objects.filter(date__month=2022)
Я предполагаю, что для использования представления API вы просто используете значения GET/POST...
Пример Backend
class DailyJuesViews(APIView):
def get(self, request):
filterdict = {}
if request.GET.get('year'):
filterdict['date__year'] = request.GET.get('year')
if request.GET.get('month'):
filterdict['date__month'] = request.GET.get('month')
# Note: If filterdict is empty it's the same as an .all()
daily_jues = DailyJues.objects.filter(**filterdict)
serializer = DailyJuesSerializers(daily_jues, many=True)
return Response(serializer.data)
Post очень похож, только используйте request.POST.get('month')
from django.db.models import Q
daily_jues = DailyJues.objects.filter(
Q(date__year=2022) & Q(date__month=2022)
)