Django:查询多条记录的最有效方法?
Posted
技术标签:
【中文标题】Django:查询多条记录的最有效方法?【英文标题】:Django: most efficient way to query many records? 【发布时间】:2011-04-25 10:25:50 【问题描述】:我有一张包含数千条记录(产品)的表。每个产品都有 4 个不同的类别:
CAT1 CAT2 CAT3 CAT4
我想知道是否有一种方法,或者最佳实践是什么,可以根据已选择的类别(使用 Ajax)动态检索可用类别。 示例:
如果CAT1 = green
所有带有CAT1 = green
的产品将有一系列CAT2
类别等等。我想知道哪些产品与CAT1 = green
匹配的CAT2 CAT3 CAT4 类别。一旦我设置了一个值或CAT2
,我想根据CAT1 && CAT2
值做同样的事情。
谢谢。
【问题讨论】:
试图理解您的问题 - 您想查找带有CAT1 = green
的对象有哪些类别?可能会添加一组产品样本,然后添加您想要的样本结果集。
你试过什么代码?这段代码有什么问题?
这些模型之间是否建立了任何关系?如果可以,请发布您的模型。
我在下面的回答中写下了一个简单的数据样本
我能问你一件事:如果你的产品属于五个类别,你会怎么做?您如何在系统中对其进行编码?
【参考方案1】:
这是一种通常称为“选择链”或“链式选择”的技术。
您可以为此使用一些相当简单的javascript,如How to limit choice field options based on another choice field in django admin的答案所示
您还可以使用预打包的解决方案,例如 django-smart-selects(通过django chain select 的 SO 回答找到)
【讨论】:
【参考方案2】:感谢您的回复。链式选择仅部分起作用,因为我没有层次结构。 以下是数据示例:
PRODUCT 1
CAT1 = vegetables
CAT2 = heavy
CAT3 = green
PRODUCT 2
CAT1 = vegetable
CAT2 = light
CAT3 = red
PRODUCT 3
CAT1 = diary
CAT2 = heavy
CAT3 = red
在我的模板中,我想创建一个系统,这样当用户选择 CAT1 = vegetables
时,他们会看到 CAT2
选项重而轻,而如果他们选择 CAT1 = diary
,CAT2
的唯一选项是重且轻以此类推。
我的方法是获取整个产品表的 json,并在选择类别后查找可用值......但是产品表包含数千个项目,我很确定它会减慢整个应用程序。
当您添加过滤功能 (list_filter
) 时,管理页面中有类似的内容,因为它只显示其中包含一些条目的字段。
谢谢!
【讨论】:
如果您想更新您的问题,正确的做法是编辑问题本身,而不是提供答案。请考虑删除此答案并改为编辑问题本身。谢谢!以上是关于Django:查询多条记录的最有效方法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 将数千条记录插入 SQLite 表的有效方法是啥?