Django 以 5 个成员组的形式检索数据
Posted
技术标签:
【中文标题】Django 以 5 个成员组的形式检索数据【英文标题】:Django Retrieving data as 5 members groups 【发布时间】:2021-05-12 22:09:06 【问题描述】:在 Django 中检索对象时,我希望将其分成一个组,例如获取所有产品,结果应该是 4 个组,每组有 5 个对象我并不是要按属性分组,只是每组有随机组五个成员,例如当检索 products = Product.objects.all() 我希望结果是 product = [ [ id:1, price:3, id:2, price:3, id:5, price:3], id:6, price:3, id:10, price:3, id:1, price:3], id:19, price:3, id: 1, price:3, id:1, price:3] ],所以我想查询一个数字,例如 3,这样它就可以给我一个包含 3 个成员的组
【问题讨论】:
希望这不是一个产品推荐算法 :) 因为它会是一个非常糟糕的算法。这看起来像一个好的解决方案吗? Django: get random object :) 不,只是普通组 【参考方案1】:不确定它是否是您想要的,但请看一下。也许会有所帮助。
products = Product.objects.all()
output = []
product_list = []
i = 1
for product in products:
product_list.append(product)
if i % 3 == 0:
output.append(product_list)
product_list = []
i += 1
if product_list.length != 0:
output.append(product_list)
输出:
[
[id:1, price:3, id:2, price:3, id:5, price:3],
[id:6, price:3, id:10, price:3, id:1, price:3],
[id:19, price:3, id:1, price:3, id:1, price:3]
]
请记住,使用此方法您将获得包含项目对象而不是字典 id:1, price:3 的列表
【讨论】:
感谢您的回复,但是 orm 中是否有任何内置方法可以在获取数据时执行此操作?【参考方案2】:我认为 ORM 中没有内置方法可以执行此功能,所以我就是这样做的
products = [products[i:i+3] for i in range(0, len(products), 3)]
【讨论】:
以上是关于Django 以 5 个成员组的形式检索数据的主要内容,如果未能解决你的问题,请参考以下文章