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 个成员组的形式检索数据的主要内容,如果未能解决你的问题,请参考以下文章

以 html 形式从 MYSQL 中检索日期

如何通过Java中的LDAP获取AD组的所有成员

读取/过滤分发组的活动目录的子组?

Java 8:以数据表的形式存储和检索数据

如何在django中将QuerySet过滤到每个组的最大成员?

SQL选择组的第n个成员