我正在使用 Django 并有两个类:
class PR(models.Model):
Jq = models.ForeignKey(JQ)
user = models.ForeignKey(User)
(snip)
def __unicode__(self):
return self.name
class JQ(models.Model):
a = models.ForeignKey(A)
(snip)
def __unicode__(self):
return self.name
我想执行一个查询,在其中获取不属于指定用户的 PR 的所有 JQ。现在,我正在这样做:
jq = JQ.objects.filter(somefield=someval)
pr = PR.objects.filter(user=request.user.id)
for r in pr:
jq = jq.exclude(id=r.Jq.id)
也就是说,我获取所有 JQ,然后获取所有引用给定用户的 PR。我正在遍历所有 PR,并排除至少一个 PR 引用的 JQ。然而,这是非常低效的。有什么建议么?
(顺便说一句,在本机 SQL 中,我可能会创建该用户 PR 的临时表,然后将该临时表与 JQ 连接起来,并且只保留用户 PR 中不匹配的行。)
感谢您的帮助!