Django如何合并查询结果

时间:2017-10-24 07:24:35

标签: python django

我有一个有选择的ArrayField,我正在尝试过滤选择:

    PAYMENT_CASH = '0'
    PAYMENT_CARD = '1'
    PAYMENT_BANK = '2'
    PAYMENT_ONLINE = '3'
    PAYMENT = (
        (PAYMENT_CASH, _('Cash')),
        (PAYMENT_CARD, _('Card')),
        (PAYMENT_BANK, _('Bank')),
        (PAYMENT_ONLINE, _('Online')),
    )
options = ArrayField(models.CharField(max_length=1, choices=PAYMENT, default='0'), size=4)

当我使用Location.objects.filter(city__id='683506').values_list('options', flat=True)时,它会返回我

<QuerySet [['0'], ['0', '1', '2', '3'], ['0', '1', '2'], ['0', '1'], ['0', '1', '2', '3']]>

我希望获得所有使用的选项。 如何合并查询或将它们组合成一个列表并合并它们?

这是我希望得到的['0', '1', '2', '3']

2 个答案:

答案 0 :(得分:2)

您可以使用chain

public class Test1 {

  public static void main(String[] args) { 
       char array[] = new char[] {65, 32, 81, 117, 105, 99, 107, 32, 66, 114, 111, 119, 110, 32, 70, 111, 120, 32, 74, 117, 109, 112, 101, 100, 32, 79, 118, 101, 114, 32, 65, 32, 76, 97, 122, 121, 32, 68, 111, 103 };

       for(int l=0;l<array.length;l++) {
           System.out.print(array[l]);   
       }       
    }
}

我在第二行中使用了set来删除重复的选项。

答案 1 :(得分:0)

您可以使用reduce函数

import functools

query = Location.objects.filter(city__id='683506').values_list('options', flat=True)
oprtions = list(set(functools.reduce(lambda a, b: a+b, query)))