как использовать order by для поля, в котором значение, например, 10 ГБ и 10 ТБ в django queryset - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь это. Если бы я смог передать дополнительные ('fup_li_sign','fup_li_value') внутри аннотации, то это сработало бы. Пожалуйста, дайте вам предложения.

Заранее, спасибо.

limited_plans = Subscription_plan.objects.filter(plan_type__type__iexact='limited', status='1', connection_type_id='1').annotate(
                                        total=Sum(Case(When(validity_type='2', then=ExpressionWrapper(F('validity') * 30, output_field=IntegerField())),
                                        When(validity_type='1',then=ExpressionWrapper(F('validity'), output_field=IntegerField())),
                                        default=IntegerField())), 

                                        fup_li=Sum(Case(When(fup_li_sign = 'GB',then=ExpressionWrapper(F('fup_li_value') * 1000, output_field=IntegerField())),
                                                        When(fup_li_sign = 'TB', then=ExpressionWrapper(F('fup_li_value'), output_field=IntegerField()))),
                                        default=IntegerField())
                                        ).extra(select={
                                                          'fup_li_sign': "SUBSTR(fup_limit, 2)",
                                                          'fup_li_value': "CAST(substr(fup_limit, 1) AS UNSIGNED)"}
                                                ).order_by('total', 'fup_li')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...