나는이 다음 모델 :장고 서브 쿼리 필터 paret 쿼리에 필드에서 값을 사용하여
class Domain(models.Model):
name = models.CharField(...)
plan = models.ForeignKey(Plan, ....)
class Plan(models.Model):
name = models.CharField(...)
num_ex_accounts = models.IntegerField(...)
class PlanDetails(models.Model):
accounts = models.IntegerField()
plan = models.ForeignKey(Plan, ....)
class Mailbox(models.Model):
domain = models.ForeignKey(Domain, ...)
도메인 계획을 가지고, 어떤 계획이 도메인을 사용하여 사서함을 만들에 대한 계정 값이 N 계획의 세부 사항을 가지고, I
domains = Domain.objects.filter(
Q(
PlainDetails.objects.filter(plan = Domain.plan).aggregate(Sum('accounts'))
<=
Mailbox.objects.filter(domain = Domain).count()
)
)
:
SELECT domain
FROM domain, plan
WHERE plan.id = domain.plan_id
AND (
SELECT SUM(accounts)
FROM plandetails WHERE plandetails.plan_id=plan.id
)
<=
(
SELECT COUNT(*)
FROM mailbox WHERE mailbox.domain_id=domain.id
)
내가 이런 장고 뭔가를 시도 :는 SQL과 같은 것입니다 원시 SQL을 사용하여 계정 값을 초과의 검색어 도메인에 싶어
하지만 작동하지 않습니다, 그것은 Domain.plan에 대한 오류가 발생합니다 하위 쿼리에서 상위 쿼리에서 해당 필드 값을 참조하는 방법이 있습니까? 이 queryset이 유효합니까 아니면 다른 (더 나은) 접근법이 있습니까? 또는 단순히 원시 SQL을 사용해야합니다,이 경우 가장 좋은 옵션은 무엇입니까?
무엇이 paret 쿼리입니까? 또한 – e4c5
미안 ** 부모 ** 쿼리 – Peter