Как вставить переменную из некоторого помещения, созданного ранее с помощью запроса django?
Я создаю запрос и хотел бы, чтобы когда студент присутствует и обоснование отклонено, было помещено значение_x, но "Value" не позволяет мне поместить в него переменную. Кто-нибудь знает способ сделать это в django? Вот код ниже:
inscritos = Inscricao.objects.all().annotate(valor_x=(Subquery(CursoValores.objects.filter(Q(curso__id_curso=OuterRef('Turma__Curso__id_curso'))&Q(data_inicio__lte=OuterRef('Turma__dt_hr_inicio'))&Q(data_fim__gte=OuterRef('Turma__dt_hr_inicio')) ).annotate(Max('valor')).values('valor__max'),output_field=FloatField())),
valor_t=Case(When(Q(Presente=False)&Q(justificativa__situacao='I'), then=Value(valor_x)),
default=Value(0),
output_field=IntegerField(),
)
Мне удалось решить эту проблему. Чтобы запустить его, просто удалите команду "Value" и заключите переменную в кавычки. Как показано ниже:
inscritos = Inscricao.objects.all().annotate(valor_x=(Subquery(CursoValores.objects.filter(Q(curso__id_curso=OuterRef('Turma__Curso__id_curso'))&Q(data_inicio__lte=OuterRef('Turma__dt_hr_inicio'))&Q(data_fim__gte=OuterRef('Turma__dt_hr_inicio'))
).annotate(Max('valor')).values('valor__max'),output_field=FloatField()
)
),
#Regra do valor devido
valor_t=Case(When(Q(Presente=False)&Q(justificativa__situacao='I'), then=('valor_x')),
default=Value(0),
output_field=IntegerField(),
),
)