我想做的是用工作日字符串("monday", "tuesday"
等注释一个查询集。
我了解如何获取int值:
queryset = queryset.annotate(
weekday_int=ExtractWeekDay("date"),
)
但是我很难自己获取字符串值。我尝试使用ExpressionWrapper
,但是F
对象似乎无法与Date
对象一起很好地播放。
我将postgres用作基础数据库,但找不到与通用lookup_name
相关的Extract
。
我已经测试过:
import calendar
class ExtractWeekDayName(ExtractWeekDay):
@property
def output_field(self):
return CharField()
def convert_value(self, value, expression, connection, context):
v = super(ExtractWeekDayName, self).convert_value(value, expression, connection, context)
try:
return calendar.day_name[int(v)].lower()
except (ValueError, IndexError):
return 'error'
except TypeError: # NoneType
return ''
似乎合法。