Пользовательское имя для ключа в наборе запросов
У меня есть набор запросов Invoice. В счете есть объект назначения, в котором есть объект пациента, имеющий атрибут name. Я пытаюсь сделать аннотацию, чтобы получить также имя пациента. Остальные поля возвращают данные нормально. Но имя пациента - нет. Я пробовал - F("appointment__patient__name") и также "appointment__patient__name". Что я упускаю?
def get_corporate_invoices(
start_date: date, end_date: date, corporate_uuid: str
) -> QuerySet[Invoice]:
return (
Invoice.objects.annotate(
entry_date=F("appointment_date"),
payment_method=Value("--", output_field=models.TextField()),
debit_amount=Round("amount", precision=2),
running_balance=Value(0.00, output_field=models.FloatField()),
patient_name=F("appointment__patient__name"),
)
.filter(
corporate_uuid=corporate_uuid,
appointment_date__gte=start_date,
appointment_date__lte=end_date,
isdeleted=False,
status="Cleared",
corporate_uuid__isnull=False,
)
.order_by("appointment_date", "concierge_rct_id")
.values(
"entry_date",
"payment_method",
"debit_amount",
"running_balance",
"patient_name"
)
)
Вот что получилось:
patient_name=Func(
F('appointment'), Value('patient'), Value('name'),
function='jsonb_extract_path_text'),
)