Django Querysets&动态字符串过滤

时间:2014-02-02 16:56:25

标签: django

似乎__in仅适用于整数。我试图按字符串过滤。

我试过这个,但它不起作用。

    groups = ['foo', 'bar'] 
    args = []
    for group in groups:
        args.append(Q(name=group))
    group_ids = Group.objects.filter(*args)

使用字符串动态过滤Django查询集的首选方法是什么?

2 个答案:

答案 0 :(得分:2)

您的查询正在执行所有这些值的and,我认为您需要or?尝试:

query = Q(name=groups[0])
for group in groups[1:]:
    query |= Q(name=group)

group_ids = Group.objects.filter(query)

答案 1 :(得分:0)

__in可用于字符串,因为它转换为SQL IN操作。是否区分大小写取决于您的表/列整理。