我给出了将它们转换为年,月,周和日的天数,但是我将默认天数设置为365天和30天到30天.如何以有效的方式进行此操作?
def get_year_month_week_day(days):
year = days / 365
days = days % 365
month = days / 30
days = days % 30
week = days / 7
day = days % 7
return year,month,week,day
def add_s(num):
if num > 1:
return 's '
return ' '
@register.filter
def daysleft(fdate):
cdate = datetime.datetime.now().date()
days = (fdate.date() - cdate).days
if days == 0:
return "Today"
elif days == 1:
return "Tomorrow"
elif days > 0:
year, month, week, day = get_year_month_week_day(days) …Run Code Online (Sandbox Code Playgroud) 我想接收带有查询参数(如果存在)的获取查询和过滤数据集。我目前正在使用下面列出的愚蠢方法。在这种情况下,我不喜欢它没有检查日期是否实际上可以被解析。在另一种方法中,我可能只想接收可以解析为 int 的数字字符串。有没有一些很酷的Pythonic方法可以做到这一点,而无需编写一堆样板代码?
class TrackList(APIView):
@token_required
def get(self, request, pk, **kwargs):
# read query params
date_from = self.request.query_params.get('date_from')
date_to = self.request.query_params.get('date_to')
# if present then filter
if date_from and date_to:
points = Track.objects.filter(user_id=pk, date__range=[date_from, date_to])
# otherwise don't filter
else:
points = Track.objects.filter(user_id=pk)
points.order_by('date')
serializer = TrackListSerializer(points, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
UPD:问题实际上不是关于dateutil.parser,而是关于通用查询参数解析器。也许我应该使用 Django Rest 序列化器?
如何使用字段长度排序
结果如下:
Model.objects.all().order_by(len("field"))
Run Code Online (Sandbox Code Playgroud)
SQL:
select * from table order by len(field)
Run Code Online (Sandbox Code Playgroud)