I持って次のモデル:ジャンゴサブクエリフィルタ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 SQLが似ている生のSQLを使用して、アカウント値を超えるクエリセットドメインで取得したい:
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
)
私はジャンゴでこのような何か試してみました:
domains = Domain.objects.filter(
Q(
PlainDetails.objects.filter(plan = Domain.plan).aggregate(Sum('accounts'))
<=
Mailbox.objects.filter(domain = Domain).count()
)
)
を
しかし、動作しません、それはDomain.planに関するエラーをスローする、サブクエリの親クエリからそのフィールド値を参照する方法はありますか?このクエリーセットは有効か、別の(より良い)アプローチがありますか?または私は単純に生のSQLを使用する必要があります、この場合、どのようなオプションが最適ですか?
パレットクエリとは何ですか? – e4c5
残念ながら私は**親**クエリー – Peter