【发布时间】:2019-10-01 16:54:03
【问题描述】:
我有一个模型如下:
class LeaveViewSet(viewsets.Model):
def get_queryset(self):
Leave.objects.annotate(duration=ExpressionWrapper(
F('end_date') - F('start_date') + timedelta(days=1)
))
class Leave(models.Model):
start_date = models.DateField()
end_date = models.DateField()
但是当我查询 Leave 并尝试访问带注释的字段 duration 时,我得到了 timedelta 对象,例如:
leave = Leave.objects.all().first()
leave.duration.days # this gives duration in days
leave.duration # this is how I want to get the value
然后我在模型中添加了如下属性:
class LeaveViewSet(viewsets.Model):
def get_queryset(self):
Leave.objects.annotate(leave_duration=ExpressionWrapper(
F('end_date') - F('start_date') + timedelta(days=1)
))
class Leave(models.Model):
start_date = models.DateField()
end_date = models.DateField()
@propery
def duratioin(self):
return self.leave_duration.days
这样序列化程序也可以正常工作,我可以访问leave.duration,但想知道我是否可以在带注释的字段中获取 int 类型的 days 而不是 timedelta 对象?
【问题讨论】:
标签: django django-models django-rest-framework django-filter