Django objects.filter with args in loop

时间:2016-08-04 12:23:24

标签: python django

我搜索一种方法来优化我的Django的研究功能(在python中)。这时我有这个:

def search(acronym=None, name=None, reference=None):
    queryset = Organization.objects

    if acronym:
        queryset = queryset.filter(acronym=acronym)

    if name:
        queryset = queryset.filter(name=name)

    if reference:
        queryset = queryset.filter(reference=reference)

    return queryset

问题是,每次添加参数时,我都要添加if +过滤器等。 有一种方法可以把它放在循环中吗?

例如:

  def search(acronym=None, name=None, reference=None):
    queryset = Organization.objects
    for arg in args : 
        if arg :
            queryset = queryset.filter(arg = arg)
    return queryset

或类似的东西?

提前致谢

1 个答案:

答案 0 :(得分:0)

在函数定义中使用UIBarButtonItem *btnSort=[[UIBarButtonItem alloc]initWithTitle:@"right" style:UIBarButtonItemStylePlain target:self action:@selector(sortedDataCalled)]; self.navigationItem.rightBarButtonItem=btnSort; } -(void)sortedDataCalled { NSLog(@"callBtn"); } 并使用字典理解过滤掉**kwargs值项目,然后再将解压缩命名参数传递给{ {1}}:

None