Как вставить переменную из некоторого помещения, созданного ранее с помощью запроса 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(),
                                                              ), 
                                                                                                
                                                )
Вернуться на верх