Django ORM查询

时间:2009-08-18 08:27:23

标签: django orm django-models

如果有以下型号:

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的项目模型。

但必须有更好的解决方案。

2 个答案:

答案 0 :(得分: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'))
)

答案 1 :(得分:0)

我认为我们无法合并Campaign QuerySet和Donation所以我们必须分两步完成:

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

现在你可以在你的页面中与用户分享的活动和捐赠离婚,这样才有优势:)