Я пытаюсь это. Если бы я смог передать дополнительные ('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')