2011-11-18 31 views
2

我想查询一个模型的实例,通用关系字段不是空的(也就是说,在下面的例子中,我正在寻找其中document.count()> 0 ):Django:查询哪里GenericRelation为空

class Report(models.Model): 
    document = generic.GenericRelation(Document) 

喜欢的东西:

Report.objects.filter(date__gte=twomonths).exclude(document__isnull=True) 

不幸的是,这并不工作 - 该查询返回有没有 “文件” 的对象是0(即它返回一个对象,其中document.count(。) )。

有没有办法查询通用关系为空的实例?

回答

2

我相信你的问题仍然可能存在一些矛盾。注意:“我正在查找document.count()== 0”和更高版本的实例,“不幸的是,这不起作用 - 查询返回没有'文档'的对象(即它返回文档所在的对象。 count()为0)“。

如果你想Report S作没有文件,你可以使用:

Report.objects.filter(document__isnull=True) 

或者

Report.objects.exclude(document__isnull=False) 

如果你想Report S作至少一个文件,你可以使用:

Report.objects.filter(document__isnull=False) 

或者

Report.objects.exclude(document__isnull=True) 
+0

这使得有很大的意义,但查询不起作用:FieldError:无法解析关键字“CONTENT_TYPE”到现场。选择是:...。列出的所有选项都不像content_type或object_id那样正确。 – Parand

+0

对不起,那是我的错。看到'GenericRelation',但认为'GenericForeignKey'。但现在我很困惑。如果它不是document.count()为'0'的地方,那么“如果关系是空的,”是什么意思? –

+1

我更新了问题。对不起,我意识到我以一种令人困惑的方式表达了它 - 注意“排除”,所以我真的希望排除document.count()== 0的情况。 – Parand