Django Q对象参数

Django Q对象参数,django,django-models,django-views,django-q,Django,Django Models,Django Views,Django Q,我不知道如何用语言来描述代码所要求的内容,我希望他能自言自语。 我需要从对象列表中创建一个过滤器 不必要的代码不起作用 更新: 代码,这看起来更好,但不起作用: from django.db.models import Q MODULES_USERS_PERMS = { MODULE_METHOD: [], MODULE_NEWS: [], MODULE_PROJECT: ['created_by', 'leader'], MODULE_TASK: [],

我不知道如何用语言来描述代码所要求的内容,我希望他能自言自语。 我需要从对象列表中创建一个过滤器

不必要的代码不起作用

更新: 代码,这看起来更好,但不起作用:

from django.db.models import Q

MODULES_USERS_PERMS = {
    MODULE_METHOD: [],
    MODULE_NEWS: [],
    MODULE_PROJECT: ['created_by', 'leader'],
    MODULE_TASK: [],
    MODULE_TICKET: [],
    MODULE_TODO: []
}
filter_fields = MODULES_USERS_PERMS[MODULE_PROJECT]
perm_q = map(lambda x: Q(x=user), filter_fields)
if perm_q:  #sum(perm_q)
    if len(perm_q) == 1:
        return perm_q[0]
    elif len(perm_q) == 2:
        return perm_q[0] | perm_q[1]
    elif len(perm_q) == 3:
        return perm_q[0] | perm_q[1] | perm_q[2]
位于/项目的字段错误/

无法将关键字“filter_obj”解析为字段。选择包括: 开始时间、注释、创建时间、创建人、创建人id、结束时间、, id、领导、领导id、姓名、项目任务、状态、票证项目


如果要组合数量未知的
Q
对象:

filters = ['created_by', 'leader']
filter_params = Q()
for filter_obj in filters:
    filter_params = filter_params | Q(filter_obj=user)
或:

它做同样的事情,只是更明确

根据您的编辑-您需要将
filter\u obj
变量中包含的字符串转换为关键字参数。您可以通过创建一个字典作为
Q
构造函数的关键字参数来实现这一点:

summed_q = perm_q[0]
for new_term in perm_q[1:]:
    summed_q = summed_q | new_term

你找到这些问题的答案了吗?
summed_q = perm_q[0]
for new_term in perm_q[1:]:
    summed_q = summed_q | new_term
filters = ['created_by', 'leader']
filter_params = Q()
for filter_obj in filters:
    kwargs = {filter_obj: user}
    filter_params = filter_params | Q(**kwargs)