Я использую Python 2.7, Postgres 9.6 и Django 1.11.У меня есть модель, Person
, с двумя CharField
s, director_id
и company_id
.Я хотел бы аннотировать его в соответствии с определенным условием: когда director_id
не равно нулю, выполните подзапрос, выполняя ArrayAgg
, который возвращает мне массив company_id
, связанных с ним (хорошо, получил это работает);когда это не так, я бы хотел вернуть массив длины 1, просто содержащий company_id
для этого Person
.Есть ли способ указать, что я хочу default
вернуть массив с определенным значением в нем?
Person.objects.annotate(
aggregated_company_ids=Case(
When(director_id__isnull=False, then=Subquery(aggregated_company_ids)),
default=[F("company_id")], # ProgrammingError: can't adapt type 'F'
output_field=ArrayField(models.CharField()),
),
)