将Q对象应用于一个对象

时间:2018-11-26 15:03:49

标签: django django-models

我在Django模型中有一个复杂的查询,我想做两件事:

  1. 获取所有满足查询条件的对象
  2. 检查一个对象是否满足查询条件

要做(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),这样,如果我不得不更改查询,则两种操作都可以按预期进行。

有没有一种方法可以将查询放在一个地方?

1 个答案:

答案 0 :(得分:0)

Model.objects.filter(THE_QUERY)返回未评估的查询集。您可以在附加条件下扩展它-在这种情况下,可以将过滤器添加到特定ID,然后再进行exists()调用。

Model.objects.filter(THE_QUERY).filter(pk=my_object_id).exists()