2009-08-18 6 views
0

モデルは以下のように存在する場合:DjangoのORMクエリ

class Donation(models.Model): 
    user = FKey(User) 
    project = FKey(Project) 
    ... 

class Campaign(models.Model): 
    user = Fkey(User) 
    project = FKey(Project) 
    ... 

class Project(models.Model) 
     ... 

与えられたユーザが関連付けられているすべてのプロジェクトのリストを見つけるための最も簡単なDjangoのORMのクエリは何ですか。

両方のモデルからプロジェクトのすべてのIDを取得し、与えられたIDのProjectsモデルを照会することです。

しかし、より良い解決策が必要です。

私たちは私たちは2つの段階でそれをしなければならない Campaignクエリセットと Donationをマージすることはできませんだと思う

答えて

2

は、これを行うための最も簡単な直接のORMのクエリで、

from django.db.models import Q 

Project.objects.filter(
Q(id__in=Campaign.objects.filter(user=SomeUser).values('project')) | 
Q(id__in=Donation.objects.filter(user=SomeUser).values('project')) 
) 
することができ
0

Project.objects.filter(id = Campaign.objects.filter(user = searchedUser)) 
Project.objects.filter(id = Donation.objects.filter(user = searchedUser)) 

、今uはどのようなユーザーにあなたのページのキャンペーンや寄付で離婚することができますので、そこの部分を持っています利点:)