if have:
class record(models.model): start_time = models.integerfield() timestamp
and in view want iterate on days between start date , end date.
is faster :
records = record.objects.filter( start_time__gte=dt.datetime.timestamp(start_date), start_time__lt=dt.datetime.timestamp(end_date) ) start_day, stop_day in days_between_start_and_end_date: records_week = records.filter( start_time__gte=dt.datetime.timestamp(start_day), start_time__lt=dt.datetime.timestamp(stop_day) )
or directly
start_day, stop_day in days_between_start_and_end_date: records_week = record.objects.filter( start_time__gte=dt.datetime.timestamp(start_day), start_time__lt=dt.datetime.timestamp(stop_day) )
in fact tried , couldn't see difference don't understand why because me doing 1 big request in first case , lot of small 1 in second cases. idea why ?
in both situations, not triggering queryset evaluated. filter
nothing composing sql statement in underline implementation, never hit database in either of cases, composing several sql statement sits in program. when start using variables django starts queryset evaluation.
django doc querysets lazy. if every orm statement hitting databsase it's not going optimal.
Comments
Post a Comment