django:通过从日期中提取月份和年份进行分组
django: group by extracting month and year from a date
我正在尝试获取尚未向某人付款的发票位置列表。
在互联网上寻找这个“解决方案”
src_invoice_month_year = InvoicePosition.objects.values_list("designer_id", ExtractYear('created_at'),ExtractMonth('created_at'))\
.filter(payoutposition__isnull=True, designer_id=designer.id).distinct()
但是查询结果是:
SELECT DISTINCT `accounting_invoiceposition`.`designer_id`, EXTRACT(YEAR FROM `accounting_invoiceposition`.`created_at`) AS `extractyear1`,
EXTRACT(MONTH FROM `accounting_invoiceposition`.`created_at`) AS `extractmonth2`, `accounting_invoiceposition`.`created_at`, `accounting_invoiceposition`.`id`
FROM `accounting_invoiceposition` LEFT OUTER JOIN `partners_payoutposition` ON (`accounting_invoiceposition`.`id` = `partners_payoutposition`.`invoiceposition_id`)
WHERE (`accounting_invoiceposition`.`designer_id` = 3 AND `partners_payoutposition`.`id` IS NULL)
ORDER BY `accounting_invoiceposition`.`created_at` DESC, `accounting_invoiceposition`.`id` DESC
所以他添加了“created_at”和来自 invoiceposition 模型的 ID,尽管我不想要那样!
例如,我在数据库中有以下 4 行:
date id
2011-12-13 13:57:43 60300
2011-12-13 13:57:43 60288
2011-11-07 13:14:29 55135
2011-11-07 13:14:29 55134
那我就想要
2011 12
2011 11
(我是 运行 designer_id 3 的查询)
很难用如此少的信息猜测你想要什么。但根据您提供的输入和输出,以下内容应该可以解决问题。
src_invoice_month_year = (
InvoicePosition.objects.filter(payoutposition__isnull=True, designer_id=designer.id)
.values_list(ExtractYear("created_at"), ExtractMonth("created_at"))
.distinct()
)
首先过滤对象,然后 select 不同的月份和年份。
我正在尝试获取尚未向某人付款的发票位置列表。
在互联网上寻找这个“解决方案”
src_invoice_month_year = InvoicePosition.objects.values_list("designer_id", ExtractYear('created_at'),ExtractMonth('created_at'))\
.filter(payoutposition__isnull=True, designer_id=designer.id).distinct()
但是查询结果是:
SELECT DISTINCT `accounting_invoiceposition`.`designer_id`, EXTRACT(YEAR FROM `accounting_invoiceposition`.`created_at`) AS `extractyear1`,
EXTRACT(MONTH FROM `accounting_invoiceposition`.`created_at`) AS `extractmonth2`, `accounting_invoiceposition`.`created_at`, `accounting_invoiceposition`.`id`
FROM `accounting_invoiceposition` LEFT OUTER JOIN `partners_payoutposition` ON (`accounting_invoiceposition`.`id` = `partners_payoutposition`.`invoiceposition_id`)
WHERE (`accounting_invoiceposition`.`designer_id` = 3 AND `partners_payoutposition`.`id` IS NULL)
ORDER BY `accounting_invoiceposition`.`created_at` DESC, `accounting_invoiceposition`.`id` DESC
所以他添加了“created_at”和来自 invoiceposition 模型的 ID,尽管我不想要那样!
例如,我在数据库中有以下 4 行:
date id
2011-12-13 13:57:43 60300
2011-12-13 13:57:43 60288
2011-11-07 13:14:29 55135
2011-11-07 13:14:29 55134
那我就想要
2011 12
2011 11
(我是 运行 designer_id 3 的查询)
很难用如此少的信息猜测你想要什么。但根据您提供的输入和输出,以下内容应该可以解决问题。
src_invoice_month_year = (
InvoicePosition.objects.filter(payoutposition__isnull=True, designer_id=designer.id)
.values_list(ExtractYear("created_at"), ExtractMonth("created_at"))
.distinct()
)
首先过滤对象,然后 select 不同的月份和年份。