Количество дней между двумя датами для каждой строки, затем Добавить все из них для всей базы данных - PullRequest
0 голосов
/ 19 сентября 2018
models.py
class Orders(models.Model):
  orderid = models.IntegerField(db_column='orderID', primary_key=True)  
  pickupdate = models.DateField(db_column='pickupDate', blank=True, null=True)  
  returndate = models.DateField(db_column='returnDate', blank=True, null=True) 

Я хотел бы вычесть повторение с помощью pickupdate (returndate - pickupdate) для каждой строки, а затем сложить их вместе для всей таблицы

Я пробовал приведенный ниже код, но он вывел большойдесятичные числа.

Orders.objects.aggregate(days=Sum( F('returndate') - F('pickupdate') )

Я также пробовал код ниже, но он выдал ошибку

Orders.objects.aggregate(days=Sum( 'returndate' - 'pickupdate' )

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Можно попробовать

Orders.objects.annotate(diff=F('returndate') - F('pickupdate')).aggregate(days=Sum('diff'))
0 голосов
/ 19 сентября 2018

Вы не возражаете против дублирующих дней в вашем счете?Если нет, вы можете использовать диапазон, чтобы получить общее количество дней между pickupdate и returndate для каждой строки ...

days = 0
for rec in Orders.objects.all():
    for n in range(int((rec.returndate - rec.pickupdate).days)+1):
        days += 1

+1 или нет, в зависимости от того, хотите ли вывключенные подсчеты (включая день начала / окончания) или исключительные подсчеты (не включают день окончания).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...