python - Django如何合并查询结果

标签 python django postgresql

我有一个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']

最佳答案

您可以使用chain :

qs = Location.objects.filter(city__id='683506').values_list('options', flat=True)
options = set(chain(*qs))

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

关于python - Django如何合并查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46904559/

相关文章:

postgresql - 如何删除 Postgres 9.2 中的死行版本

ruby-on-rails - 如何测试数据库记录是否按id排序?

python - 使用 'for' 循环写入 Python 中的 CSV 文件

python - python 2.7.3 中无效语法错误的问题

Python - 如何在退出程序(在分离 screen 上运行)之前启动子进程?

django - 将 Let's Encrypt SSL 添加到部署在 Heroku 上的 Django 应用程序时出现问题

python - 使 pandas plot() 显示 xlabel 和 xvalues

python - Django - 使用 for 循环在模板中显示图像

django - Django 中的 GenericForeignKey 和 Admin

ruby-on-rails - 获取数据时出错:Errno::ENETUNREACH:尝试对无法访问的网络进行套接字操作。安装 gem 时出错