python - Django/Djagno REST 字段查找“范围”不返回范围,而是返回单值结果
问题描述
我正在尝试返回一系列包含日期属性的对象。使用字段查找范围,它只返回具有起始范围的对象。
例如:
如果范围的开始等于 2021-05-19,范围的结束等于 2021-05-21,则仅返回日期为 2021-05-19 的对象。
网址.py
urlpatterns = [
...
path('weekly/<str:activity_date>/', views.ActivityDateList.as_view(), name='weekly_dates'),
...
]
视图.py
from django.shortcuts import render
from rest_framework import generics
from .serializers import ActivityListSerializer
from .models import Activity
from keeper import serializers
...
class WeeklyActivityView(generics.ListAPIView):
serializer_class = ActivityListSerializer
def get_queryset(self):
end_of_week = "2021-05-21" # Temporary test date
activity_date = self.kwargs['activity_date']
return render(Activity.objects.filter(activity_date__range=(activity_date, end_of_week)))
模型.py
class Activity(models.Model):
activity_name = models.CharField(max_length=200, blank=False)
activity_duration = models.CharField(max_length=300, blank=False)
activity_date = models.DateField(auto_now=False, blank=False)
def __str__(self):
return f"Activity: {self.activity_name} Started at: {self.activity_start} Activity Duration: {self.activity_duration}"
序列化程序.py
from rest_framework import serializers
from .models import Activity
from rest_framework.reverse import reverse
class ActivityListSerializer(serializers.ModelSerializer):
absolute_url = serializers.SerializerMethodField()
class Meta:
model = Activity
fields = [
'activity_name',
'activity_duration',
'activity_date',
'absolute_url'
]
def get_absolute_url(self, obj):
return reverse('activities_detail', args=(obj.pk,))
存在其他日期的对象:
如何返回指定范围内日期属性的对象?
解决方案
在代码中为了使用日期添加 __date 到字段
return render(Activity.objects.filter(activity_date__range=(activity_date, end_of_week)))
用。。。来代替
return render(Activity.objects.filter(activity_date__date__range=(activity_date, end_of_week)))
推荐阅读
- karate - 空手道机器人:如何滚动数据网格元素?
- ios - iOS IKEV2 VPN 错误:为什么我无法连接?
- node.js - 为什么使用 global.mongoose 来缓存 mongodb 连接?
- java - java将对象添加到列表中,是否创建了新对象?
- sql - 订单和运输表中的聚合/连接
- excel - Chrome 不会将 jsp 转换为 xlsx,但 IE 会
- visual-studio-code - 在 Raspberry Pi / Debian Linux 上运行 Visual Studio 代码:未打开
- python - 如何在 Python 中显示 Google 人脸检测 Vision API 使用的图像
- python - 如何在 Python 中制作经过验证的符号?
- python - Python:枚举txt文件中的行,后跟逗号