本文整理汇总了Python中django.db.models.functions.Trunc方法的典型用法代码示例。如果您正苦于以下问题:Python functions.Trunc方法的具体用法?Python functions.Trunc怎么用?Python functions.Trunc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类django.db.models.functions
的用法示例。
在下文中一共展示了functions.Trunc方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: datetimes
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def datetimes(self, field_name, kind, order='ASC', tzinfo=None):
"""
Return a list of datetime objects representing all available
datetimes for the given field_name, scoped to 'kind'.
"""
assert kind in ("year", "month", "day", "hour", "minute", "second"), \
"'kind' must be one of 'year', 'month', 'day', 'hour', 'minute' or 'second'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
if settings.USE_TZ:
if tzinfo is None:
tzinfo = timezone.get_current_timezone()
else:
tzinfo = None
return self.annotate(
datetimefield=Trunc(field_name, kind, output_field=DateTimeField(), tzinfo=tzinfo),
plain_field=F(field_name)
).values_list(
'datetimefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datetimefield')
示例2: datetimes
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def datetimes(self, field_name, kind, order='ASC', tzinfo=None):
"""
Return a list of datetime objects representing all available
datetimes for the given field_name, scoped to 'kind'.
"""
assert kind in ('year', 'month', 'week', 'day', 'hour', 'minute', 'second'), \
"'kind' must be one of 'year', 'month', 'week', 'day', 'hour', 'minute', or 'second'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
if settings.USE_TZ:
if tzinfo is None:
tzinfo = timezone.get_current_timezone()
else:
tzinfo = None
return self.annotate(
datetimefield=Trunc(field_name, kind, output_field=DateTimeField(), tzinfo=tzinfo),
plain_field=F(field_name)
).values_list(
'datetimefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datetimefield')
示例3: datetimes
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def datetimes(self, field_name, kind, order='ASC', tzinfo=None):
"""
Returns a list of datetime objects representing all available
datetimes for the given field_name, scoped to 'kind'.
"""
assert kind in ("year", "month", "day", "hour", "minute", "second"), \
"'kind' must be one of 'year', 'month', 'day', 'hour', 'minute' or 'second'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
if settings.USE_TZ:
if tzinfo is None:
tzinfo = timezone.get_current_timezone()
else:
tzinfo = None
return self.annotate(
datetimefield=Trunc(field_name, kind, output_field=DateTimeField(), tzinfo=tzinfo),
plain_field=F(field_name)
).values_list(
'datetimefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datetimefield')
示例4: dates
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def dates(self, field_name, kind, order='ASC'):
"""
Return a list of date objects representing all available dates for
the given field_name, scoped to 'kind'.
"""
assert kind in ("year", "month", "day"), \
"'kind' must be one of 'year', 'month' or 'day'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
return self.annotate(
datefield=Trunc(field_name, kind, output_field=DateField()),
plain_field=F(field_name)
).values_list(
'datefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datefield')
示例5: _truncate_delete_field
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def _truncate_delete_field(self):
return Trunc('deleted_on', kind='minute')
示例6: dates
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def dates(self, field_name, kind, order='ASC'):
"""
Return a list of date objects representing all available dates for
the given field_name, scoped to 'kind'.
"""
assert kind in ('year', 'month', 'week', 'day'), \
"'kind' must be one of 'year', 'month', 'week', or 'day'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
return self.annotate(
datefield=Trunc(field_name, kind, output_field=DateField()),
plain_field=F(field_name)
).values_list(
'datefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datefield')
示例7: dates
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def dates(self, field_name, kind, order='ASC'):
"""
Returns a list of date objects representing all available dates for
the given field_name, scoped to 'kind'.
"""
assert kind in ("year", "month", "day"), \
"'kind' must be one of 'year', 'month' or 'day'."
assert order in ('ASC', 'DESC'), \
"'order' must be either 'ASC' or 'DESC'."
return self.annotate(
datefield=Trunc(field_name, kind, output_field=DateField()),
plain_field=F(field_name)
).values_list(
'datefield', flat=True
).distinct().filter(plain_field__isnull=False).order_by(('-' if order == 'DESC' else '') + 'datefield')
示例8: get_status
# 需要导入模块: from django.db.models import functions [as 别名]
# 或者: from django.db.models.functions import Trunc [as 别名]
def get_status(self, started=None, ended=None, use_ingest_time=False):
"""Returns ingest status information within the given time range grouped by strike process.
:param started: Query ingests updated after this amount of time.
:type started: :class:`datetime.datetime`
:param ended: Query ingests updated before this amount of time.
:type ended: :class:`datetime.datetime`
:param use_ingest_time: Whether or not to group the status values by ingest time (False) or data time (True).
:type use_ingest_time: bool
:returns: The list of ingest status models that match the time range.
:rtype: [:class:`ingest.models.IngestStatus`]
"""
# Fetch a list of ingests
ingests = Ingest.objects.filter(status='INGESTED')
ingests = ingests.select_related('strike')
ingests = ingests.defer('strike__configuration')
# Apply time range filtering
if started:
if use_ingest_time:
ingests = ingests.filter(ingest_ended__gte=started)
else:
ingests = ingests.filter(data_ended__gte=started)
if ended:
if use_ingest_time:
ingests = ingests.filter(ingest_ended__lte=ended)
else:
ingests = ingests.filter(data_started__lte=ended)
# Apply sorting and exclude any null values
if use_ingest_time:
ingests = ingests.exclude(ingest_ended__isnull=True).annotate(
time=Trunc('ingest_ended', 'hour',
output_field=models.DateTimeField(blank=True, null=True))).order_by('time').values('time')
else:
ingests = ingests.exclude(data_started__isnull=True).annotate(
time=Trunc('data_started', 'hour',
output_field=models.DateTimeField(blank=True, null=True))).order_by('time').values('time')
ingests = ingests.annotate(files=Count('id'), size=Sum('file_size'))
# Build a mapping of all possible strike processes
fill_status = []
for strike in Strike.objects.all().select_related('job', 'job__job_type'):
strike_ingests = ingests.filter(strike__id=strike.id)
if use_ingest_time:
info = strike_ingests.aggregate(all_files=Sum('files'), all_sizes=Sum('file_size'),
most_recent=Max('ingest_ended'))
else:
info = strike_ingests.aggregate(all_files=Sum('files'), all_sizes=Sum('file_size'),
most_recent=Max('data_started'))
ingest_status = IngestStatus(strike=strike, most_recent=info['most_recent'], files=info['all_files'],
size=info['all_sizes'])
time_slots = {item['time']: IngestCounts(item['time'], item['files'], item['size'])
for item in strike_ingests.values('time', 'size', 'files')}
fill_status.append(self._fill_status(ingest_status, time_slots, started, ended))
return fill_status