ForeignKey
поля автоматически добавляют _id
к имени поля модели, поэтому вам нужно будет использовать customerId_id
для ссылки на ForeignKey
. Ясно, что это не то, что вам нужно, поэтому я бы рекомендовал вместо этого переименовать поле в customer
, и я думаю, именно поэтому ваш запрос пуст.
С учетом сказанного, вы на самом деле недля этого нужно Subquery
или OuterRef
. Вместо этого вы можете использовать обратное отношение вашей Customer
модели вместе с Max
:
from django.db.models import Max
Customer.objects.select_related('Purchase').annotate(
last_purchase = Max('purchases__order_date')
)
Наконец, ключ null
по умолчанию имеет значение False, поэтому нет необходимостискажем null=False
, и не имеет смысла иметь blank=True
, но null=False
. См. этот вопрос для превосходного объяснения различия между null
и blank
.
Обновление
Coalesce
Похоже, что функция идеально подходит для этого сценария:
from django.db.models import Max, Coalesce, Value
Customer.objects.select_related('Purchase').annotate(
last_purchase = Coalesce(Max('purchases__order_date', Value(''))
)