Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不引用字段的Django查询_Django_Django Queryset - Fatal编程技术网

不引用字段的Django查询

不引用字段的Django查询,django,django-queryset,Django,Django Queryset,快速概述: 我有一个具有工作流状态的预测模型设置 现在,我正在尝试查询处于特定状态的所有预测,并且当前登录的人是\u staff 如果我写的是一个原始查询,这不会是一个问题,因为我可以写以下内容: SELECT * FROM forecast WHERE forecast.workflow_state_id in (1,2,3,4) AND 1 = user.is_staff 然而,当我试图在queryset中编写这个时,我不知道如何引用常量。我不想写一个原始查询集,如果可能的话,我想避免使用

快速概述:

我有一个具有工作流状态的预测模型设置

现在,我正在尝试查询处于特定状态的所有预测,并且当前登录的人是\u staff

如果我写的是一个原始查询,这不会是一个问题,因为我可以写以下内容:

SELECT * FROM forecast WHERE forecast.workflow_state_id in (1,2,3,4) AND 1 = user.is_staff
然而,当我试图在queryset中编写这个时,我不知道如何引用常量。我不想写一个原始查询集,如果可能的话,我想避免使用额外的字段


如有任何建议,将不胜感激。谢谢

您的常数只是一个
真值

Forecast.objects.filter(workflow_state__in=[1,2,3,4], user__is_staf=True)

您的编辑使事情变得不那么清晰,但您似乎在询问如何检查当前登录的用户,而不是模型引用的用户。在这种情况下,在查询中根本不会这样做;您的示例SQL语句不起作用,在ORM中也不起作用。当然,您可以在Python中执行此操作:

if request.user.is_staff:
    forecasts = Forecast.objects.filter(workflow_state__in=[1,2,3,4])

在这种情况下,用户指的是预测模型用户,而不是登录的用户。好吧,这是相同的逻辑,如果您展示您的模型,我可以对查询有更好的了解。为什么您认为在ORM查询中引用常量更难?这是一个简单的问题,传递它。我同意,如果你是避免一个领域,这是非常容易的。然而,在这种情况下,你不是。您或多或少会在查询中添加一个条件,而实际上没有引用模型中的字段。