#Subquery #OuterRef
class User(models.Model):
name = models.CharField(max_length=100)
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product_name = models.CharField(max_length=100)
created_at = models.DateTimeField()
Subquery()의 인자는 qs(query set)가 들어가야함
예시) OuterRef('pk') : User 개체의 pk를 내부 쿼리에서 참조
모든 유저의 "가장 최근 주문" 가져오기
from django.db.models import Subquery, OuterRef
latest_order = Order.objects.filter(
user=OuterRef('pk')
).order_by('-created_at').values('product_name')[:1]
users = User.objects.annotate(
latest_product=Subquery(latest_order)
)