當前位置: 首頁>>代碼示例>>Python>>正文


Python models.ExpressionWrapper方法代碼示例

本文整理匯總了Python中django.db.models.ExpressionWrapper方法的典型用法代碼示例。如果您正苦於以下問題:Python models.ExpressionWrapper方法的具體用法?Python models.ExpressionWrapper怎麽用?Python models.ExpressionWrapper使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在django.db.models的用法示例。


在下文中一共展示了models.ExpressionWrapper方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: _get_matching_omim

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _get_matching_omim(query, projects):
    """Returns OMIM records that match the given query string"""
    records = Omim.objects.filter(
        Q(phenotype_mim_number__icontains=query) | Q(phenotype_description__icontains=query)
    ).filter(phenotype_mim_number__isnull=False).annotate(
        description_start=ExpressionWrapper(Q(phenotype_description__istartswith=query), output_field=BooleanField()),
        mim_number_start=ExpressionWrapper(Q(phenotype_mim_number__istartswith=query), output_field=BooleanField()),
    ).only('phenotype_mim_number', 'phenotype_description').order_by(
        '-description_start', '-mim_number_start', 'phenotype_description').distinct()[:MAX_RESULTS_PER_CATEGORY]
    result = []
    for record in records:
        result.append({
            'key': record.phenotype_mim_number,
            'title': record.phenotype_description,
            'description': '({})'.format(record.phenotype_mim_number) if record.phenotype_mim_number else None,
        })

    return result 
開發者ID:macarthur-lab,項目名稱:seqr,代碼行數:20,代碼來源:awesomebar_api.py

示例2: _get_matching_hpo_terms

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _get_matching_hpo_terms(query, projects):
    """Returns OMIM records that match the given query string"""
    records = HumanPhenotypeOntology.objects.filter(
        Q(hpo_id__icontains=query) | Q(name__icontains=query)
    ).annotate(
        name_start=ExpressionWrapper(Q(name__istartswith=query), output_field=BooleanField()),
        hpo_id_start=ExpressionWrapper(Q(hpo_id__istartswith=query), output_field=BooleanField()),
    ).only('hpo_id', 'name', 'category_id').order_by(
        '-name_start', '-hpo_id_start', 'name').distinct()[:MAX_RESULTS_PER_CATEGORY]
    result = []
    for record in records:
        result.append({
            'key': record.hpo_id,
            'title': record.name,
            'description': '({})'.format(record.hpo_id),
            'category': record.category_id,
        })

    return result 
開發者ID:macarthur-lab,項目名稱:seqr,代碼行數:21,代碼來源:awesomebar_api.py

示例3: punishments

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def punishments(request):
  name = request.resolver_match.url_name

  if "ban" in name:
    mode = "ban"
  elif "mute" in name:
    mode = "mute"
  elif "gag" in name:
    mode = "gag"

  Punishment.objects.annotate(completion=ExpressionWrapper(F('created_at') + F('length'),
                                                           output_field=DateTimeField()))\
                    .filter(completion__lte=timezone.now(),
                            resolved=False,
                            length__isnull=False).update(resolved=True)
  servers = Server.objects.all()

  return render(request, 'pages/punishments/general.pug', {'mode': mode,
                                                           'servers': servers}) 
開發者ID:indietyp,項目名稱:hawthorne,代碼行數:21,代碼來源:views.py

示例4: annotate_expires_at

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def annotate_expires_at(self):
        """Add an ``expires_at`` field to the queryset results."""
        return self.annotate(
            expires_at=ExpressionWrapper(
                (F('last_beat') + F('timeout')),
                output_field=EXPIRES_COLUMN_TYPE
            )
        ) 
開發者ID:mvantellingen,項目名稱:django-healthchecks,代碼行數:10,代碼來源:models.py

示例5: _populate_storage_daily_summary_table

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _populate_storage_daily_summary_table(self):
        """Populate the daily summary table."""
        included_fields = [
            "usage_start",
            "usage_end",
            "namespace",
            "report_period_id",
            "pod",
            "node",
            "persistentvolumeclaim",
            "persistentvolume",
            "storageclass",
            "cluster_id",
            "cluster_alias",
        ]
        annotations = {
            "volume_labels": Coalesce(F("persistentvolume_labels"), F("persistentvolumeclaim_labels")),
            "persistentvolumeclaim_capacity_gigabyte": ExpressionWrapper(
                F("persistentvolumeclaim_capacity_bytes") * math.pow(2, -30), output_field=DecimalField()
            ),
            "persistentvolumeclaim_capacity_gigabyte_months": ExpressionWrapper(
                F("persistentvolumeclaim_capacity_byte_seconds") / 86400 * 30 * math.pow(2, -30),
                output_field=DecimalField(),
            ),
            "volume_request_storage_gigabyte_months": ExpressionWrapper(
                F("volume_request_storage_byte_seconds") / 86400 * 30 * math.pow(2, -30), output_field=DecimalField()
            ),
            "persistentvolumeclaim_usage_gigabyte_months": ExpressionWrapper(
                F("persistentvolumeclaim_usage_byte_seconds") / 86400 * 30 * math.pow(2, -30),
                output_field=DecimalField(),
            ),
            "data_source": Value("Storage", output_field=CharField()),
        }

        entries = OCPStorageLineItemDaily.objects.values(*included_fields).annotate(**annotations)

        for entry in entries:
            summary = OCPUsageLineItemDailySummary(**entry)
            summary.save() 
開發者ID:project-koku,項目名稱:koku,代碼行數:41,代碼來源:helpers.py

示例6: filter_cone_search

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def filter_cone_search(self, queryset, name, value):
        """
        Executes cone search by annotating each target with separation distance from either the specified RA/Dec or
        the RA/Dec of the specified target. Formula is from Wikipedia: https://en.wikipedia.org/wiki/Angular_distance
        The result is converted to radians.

        Cone search is preceded by a square search to reduce the search radius before annotating the queryset, in
        order to make the query faster.
        """
        if name == 'cone_search':
            ra, dec, radius = value.split(',')
        elif name == 'target_cone_search':
            target_name, radius = value.split(',')
            targets = Target.objects.filter(
                Q(name__icontains=target_name) | Q(aliases__name__icontains=target_name)
            ).distinct()
            if len(targets) == 1:
                ra = targets[0].ra
                dec = targets[0].dec
            else:
                return queryset.filter(name=None)

        ra = float(ra)
        dec = float(dec)

        double_radius = float(radius) * 2
        queryset = queryset.filter(ra__gte=ra - double_radius, ra__lte=ra + double_radius,
                                   dec__gte=dec - double_radius, dec__lte=dec + double_radius)

        separation = ExpressionWrapper(
            180 * ACos(
                (Sin(radians(dec)) * Sin(Radians('dec'))) +
                (Cos(radians(dec)) * Cos(Radians('dec')) * Cos(radians(ra) - Radians('ra')))
            ) / Pi(), FloatField()
        )

        return queryset.annotate(separation=separation).filter(separation__lte=radius)

    # hide target grouping list if user not logged in 
開發者ID:TOMToolkit,項目名稱:tom_base,代碼行數:41,代碼來源:filters.py

示例7: pearls

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def pearls(self):
        return (self.exclude(nb_likes=0)
                    .annotate(
                        dislike_rate=ExpressionWrapper(
                            Cast(F('nb_dislikes'), FloatField()) / F('nb_likes'), output_field=FloatField())
                    )
                    .filter(nb_ratings__gte=PEARLS_MIN_RATINGS, nb_ratings__lte=PEARLS_MAX_RATINGS, dislike_rate__lte=PEARLS_MAX_DISLIKE_RATE)
                    .order_by('dislike_rate')) 
開發者ID:mangaki,項目名稱:mangaki,代碼行數:10,代碼來源:models.py

示例8: hot_problems

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def hot_problems(duration, limit):
    cache_key = 'hot_problems:%d:%d' % (duration.total_seconds(), limit)
    qs = cache.get(cache_key)
    if qs is None:
        qs = Problem.get_public_problems() \
                    .filter(submission__date__gt=timezone.now() - duration, points__gt=3, points__lt=25)
        qs0 = qs.annotate(k=Count('submission__user', distinct=True)).order_by('-k').values_list('k', flat=True)

        if not qs0:
            return []
        # make this an aggregate
        mx = float(qs0[0])

        qs = qs.annotate(unique_user_count=Count('submission__user', distinct=True))
        # fix braindamage in excluding CE
        qs = qs.annotate(submission_volume=Count(Case(
            When(submission__result='AC', then=1),
            When(submission__result='WA', then=1),
            When(submission__result='IR', then=1),
            When(submission__result='RTE', then=1),
            When(submission__result='TLE', then=1),
            When(submission__result='OLE', then=1),
            output_field=FloatField(),
        )))
        qs = qs.annotate(ac_volume=Count(Case(
            When(submission__result='AC', then=1),
            output_field=FloatField(),
        )))
        qs = qs.filter(unique_user_count__gt=max(mx / 3.0, 1))

        qs = qs.annotate(ordering=ExpressionWrapper(
            0.5 * F('points') * (0.4 * F('ac_volume') / F('submission_volume') + 0.6 * F('ac_rate')) +
            100 * e ** (F('unique_user_count') / mx), output_field=FloatField(),
        )).order_by('-ordering').defer('description')[:limit]

        cache.set(cache_key, qs, 900)
    return qs 
開發者ID:DMOJ,項目名稱:online-judge,代碼行數:39,代碼來源:problems.py

示例9: test_pivot_aggregate

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def test_pivot_aggregate(self):
        shirt_sales = ShirtSales.objects.all()

        data = ExpressionWrapper(F('units') * F('price'), output_field=DecimalField())
        pt = pivot(ShirtSales, 'store__region__name', 'shipped', data, Avg, default=0)

        for row in pt:
            region_name = row['store__region__name']
            for dt in (key for key in row.keys() if key != 'store__region__name'):
                spends = [ss.units * ss.price for ss in shirt_sales if force_text(ss.shipped) == force_text(dt) and ss.store.region.name == region_name]
                avg = sum(spends) / len(spends) if spends else 0
                self.assertAlmostEqual(row[dt], float(avg), places=4) 
開發者ID:martsberger,項目名稱:django-pivot,代碼行數:14,代碼來源:test.py

示例10: _get_hits_order

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _get_hits_order(self, request, order):
        try:
            result = ESTopRules(request).get(count=Rule.objects.count(), order=order)
        except ESError:
            queryset = Rule.objects.order_by('sid')
            queryset = queryset.annotate(hits=models.Value(0, output_field=models.IntegerField()))
            queryset = queryset.annotate(hits=models.ExpressionWrapper(models.Value(0), output_field=models.IntegerField()))
            return queryset.values_list('sid', 'hits')

        result = map(lambda x: (x['key'], x['doc_count']), result)
        return result 
開發者ID:StamusNetworks,項目名稱:scirius,代碼行數:13,代碼來源:rest_api.py

示例11: _populate_daily_summary_table

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _populate_daily_summary_table(self):
        """Populate the daily summary table."""
        OCPUsageLineItemDailySummary.objects.all().delete()
        included_fields = [
            "usage_start",
            "usage_end",
            "namespace",
            "report_period_id",
            "pod",
            "node",
            "cluster_id",
            "cluster_alias",
            "node_capacity_cpu_cores",
            "pod_labels",
        ]
        annotations = {
            "pod_usage_cpu_core_hours": F("pod_usage_cpu_core_seconds") / 3600,
            "pod_request_cpu_core_hours": Sum(
                ExpressionWrapper(F("pod_request_cpu_core_seconds") / 3600, output_field=DecimalField())
            ),
            "pod_limit_cpu_core_hours": Sum(
                ExpressionWrapper(F("pod_limit_cpu_core_seconds") / 3600, output_field=DecimalField())
            ),
            "pod_usage_memory_gigabyte_hours": Sum(
                ExpressionWrapper(F("pod_usage_memory_byte_seconds") / 3600, output_field=DecimalField())
            )
            * math.pow(2, -30),
            "pod_request_memory_gigabyte_hours": Sum(
                ExpressionWrapper(F("pod_request_memory_byte_seconds") / 3600, output_field=DecimalField())
            )
            * math.pow(2, -30),
            "pod_limit_memory_gigabyte_hours": ExpressionWrapper(
                F("pod_limit_memory_byte_seconds") / 3600, output_field=DecimalField()
            )
            * math.pow(2, -30),
            "node_capacity_cpu_core_hours": F("node_capacity_cpu_core_seconds") / 3600,
            "node_capacity_memory_gigabytes": F("node_capacity_memory_bytes") * math.pow(2, -30),
            "node_capacity_memory_gigabyte_hours": ExpressionWrapper(
                F("node_capacity_memory_byte_seconds") / 3600, output_field=DecimalField()
            )
            * math.pow(2, -30),
            "cluster_capacity_cpu_core_hours": F("cluster_capacity_cpu_core_seconds") / 3600,
            "cluster_capacity_memory_gigabyte_hours": ExpressionWrapper(
                F("cluster_capacity_memory_byte_seconds") / 3600, output_field=DecimalField()
            )
            * math.pow(2, -30),
            "total_capacity_cpu_core_hours": F("cluster_capacity_cpu_core_seconds") / 3600 * 2,
            "total_capacity_memory_gigabyte_hours": ExpressionWrapper(
                F("cluster_capacity_memory_byte_seconds") / 3600 * 2, output_field=DecimalField()
            )
            * math.pow(2, -30),
            "data_source": Value("Pod", output_field=CharField()),
        }

        entries = OCPUsageLineItemDaily.objects.values(*included_fields).annotate(**annotations)

        for entry in entries:
            summary = OCPUsageLineItemDailySummary(**entry)
            summary.save() 
開發者ID:project-koku,項目名稱:koku,代碼行數:61,代碼來源:helpers.py

示例12: _front_page

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def _front_page(paging_size=settings.PAGING_SIZE, page=0, add_filter={}, add_q=[], as_of=None, days_back=50):
    # TODO: weighting https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d
    # (P-1) / (T+2)^G
    if as_of is None:
        now = timezone.now()
    else:
        now = as_of
    if connection.vendor == 'postgresql':
        now_value = Value(now, output_field=fields.DateTimeField())
        submission_age_float = ExpressionWrapper(  ( now_value - F('created_at')), output_field=fields.DurationField())
        submission_age_hours = ExpressionWrapper(Extract(F('tf'), 'epoch') / 60 / 60 + 2.1 , output_field=fields.FloatField())
        real_p = ExpressionWrapper(F('points') - 1, output_field=fields.FloatField())
        formula = ExpressionWrapper(   F('p') / ( Power(F('tfh'), F('g'))  +0.001)   , output_field=fields.FloatField())
        return Story.objects.select_related('user')\
                .filter(duplicate_of__isnull=True)\
                .filter(points__gte=1) \
                .filter(created_at__gte=now - datetime.timedelta(days=days_back)) \
                .filter(created_at__lte=now) \
                .filter(**add_filter) \
                .annotate(tf=submission_age_float) \
                .annotate(tfh=submission_age_hours) \
                .annotate(p=real_p) \
                .annotate(g=Value(1.8, output_field=fields.FloatField())) \
                .annotate(formula=formula) \
                .order_by('-formula')[(page*paging_size):(page+1)*(paging_size)]
    elif connection.vendor == 'sqlite':
        now_value = Value(now, output_field=fields.DateTimeField())
        submission_age_float = ExpressionWrapper(  ( now_value - F('created_at')), output_field=fields.FloatField())
        submission_age_hours = ExpressionWrapper(F('tf') / 60 / 60 / 1000000 + 2.1 , output_field=fields.FloatField())
        real_p = ExpressionWrapper(F('points') - 1, output_field=fields.FloatField())
        formula = ExpressionWrapper(   F('p') / ( Power(F('tfh'), F('g'))  +0.001)   , output_field=fields.FloatField())
        return Story.objects.select_related('user')\
                .filter(duplicate_of__isnull=True)\
                .filter(points__gte=1) \
                .filter(created_at__gte=now - datetime.timedelta(days=days_back)) \
                .filter(created_at__lte=now) \
                .filter(**add_filter) \
                .annotate(tf=submission_age_float) \
                .annotate(tfh=submission_age_hours) \
                .annotate(p=real_p) \
                .annotate(g=Value(1.8, output_field=fields.FloatField())) \
                .annotate(formula=formula) \
                .order_by('-formula')[(page*paging_size):(page+1)*(paging_size)]
    else: 
        raise NotImplementedError("No frontpage magic for database engine %s implemented"%(connection.vendor)) 
開發者ID:sebst,項目名稱:pythonic-news,代碼行數:47,代碼來源:views.py

示例13: overview

# 需要導入模塊: from django.db import models [as 別名]
# 或者: from django.db.models import ExpressionWrapper [as 別名]
def overview(request, event_url_name):
    event = get_object_or_404(Event, url_name=event_url_name)

    # permission
    if not event.is_admin(request.user):
        return nopermission(request)

    num_helpers = event.helper_set.count()

    num_coordinators = event.all_coordinators.count()

    num_vegetarians = event.helper_set.filter(vegetarian=True).count()

    num_shift_slots = Shift.objects.filter(job__event=event).aggregate(
        Sum('number'))['number__sum']

    empty_slots_expr = ExpressionWrapper(F('number') - F('num_helpers'),
                                         output_field=fields.IntegerField())
    num_empty_shift_slots = Shift.objects.filter(job__event=event) \
        .annotate(num_helpers=Count('helper')) \
        .annotate(empty_slots=empty_slots_expr) \
        .aggregate(Sum('empty_slots'))['empty_slots__sum']

    total_duration = ExpressionWrapper((F('end') - F('begin')) * F('number'),
                                       output_field=fields.DurationField())
    try:
        hours_total = Shift.objects.filter(job__event=event) \
                           .annotate(duration=total_duration) \
                           .aggregate(Sum('duration'))['duration__sum']
    except (OperationalError, OverflowError):
        hours_total = None
    except Exception as e:
        # handle psycopg2.DataError without importing psycopg2
        # happens on overflow with postgresql
        if 'DataError' in str(e.__class__):
            hours_total = None
        else:
            raise e

    # render
    context = {'event': event,
               'num_helpers': num_helpers,
               'num_coordinators': num_coordinators,
               'num_vegetarians': num_vegetarians,
               'num_shift_slots': num_shift_slots,
               'num_empty_shift_slots': num_empty_shift_slots,
               'hours_total': hours_total}
    return render(request, 'statistic/overview.html', context) 
開發者ID:helfertool,項目名稱:helfertool,代碼行數:50,代碼來源:overview.py


注:本文中的django.db.models.ExpressionWrapper方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。