我在Django模型中有一个复杂的查询,我想做两件事:
要做(1),我有一个Q对象编码查询,而我只是做
Model.objects.filter(THE_QUERY)
查询类似于
THE_QUERY = Q(field_1__isnull=False) & Q(field_2__gte=2) & Q(field3=0)
但是我不知道如何为{2}重用THE_QUERY
中的查询。我想将查询的谓词放在一个地方,并使用该信息来执行(1)和(2),这样,如果我不得不更改查询,则两种操作都可以按预期进行。
有没有一种方法可以将查询放在一个地方?
答案 0 :(得分:0)
Model.objects.filter(THE_QUERY)
返回未评估的查询集。您可以在附加条件下扩展它-在这种情况下,可以将过滤器添加到特定ID,然后再进行exists()
调用。
Model.objects.filter(THE_QUERY).filter(pk=my_object_id).exists()