我有一个有选择的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']
答案 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)))