【发布时间】:2022-01-21 07:06:18
【问题描述】:
我正在努力将一些相对复杂的 SQL 转换为 Django 可以使用的东西。我试图不只使用原始 SQL,因为我认为使用标准 Django 工具包将帮助我了解更多关于 Django 的信息。
我已经设法将部分 sql 分解成块,并且正在零碎地处理它们以使事情变得更容易。
这是有问题的 SQL:
SELECT i.year, i.brand, i.desc, i.colour, i.size, i.mpn, i.url,
COALESCE(DATE_FORMAT(i_eta.eta, '%M %Y'),'Unknown')
as eta
FROM i
JOIN i_eta ON i_eta.mpn = i.mpn
WHERE category LIKE 'kids'
ORDER BY i.brand, i.desc, i.colour, FIELD(size, 'xxl','xl','l','ml','m','s','xs','xxs') DESC, size+0, size
这是我所拥有的(尝试逐行转换):
(grabbed automatically when performing filters)
(have to figure out django doc on coalesce for syntax)
db alias haven't been able to find yet - it is crucial since there is a db view that requires it
already included in the original q
.select_related?
.filter(category="kids")
.objects.order_by('brand','desc','colour') - don't know how to deal with SQL FIELDS
任何建议将不胜感激!
【问题讨论】:
-
1) 你可以改变表格的结构吗? 2) 您是在寻找惯用 Django 的东西,还是希望尽可能少地更改上述语句的逻辑?
-
我对 Django 的了解还不够,无法知道最好的做法是什么。带有关联视图的 SQL 查询运行良好且速度非常快。我想知道在 Django 中做到这一点的“最佳”方式(不管是什么意思)。如果有“最佳实践”可以将 SQL 语句转换为产生类似结果的东西,那么我会这样做。
标签: django django-views