У меня есть модель, как указано ниже:
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 вместо объекта timedelta в аннотированном поле?