gpt4 book ai didi

python - 在 Django 的 get_list_or_404 中排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:59 25 4
gpt4 key购买 nike

我在 Django 中进行查询,它包含一个非任意顺序的产品 ID 数组,以及与这些 ID 对应的产品列表:

product_ids= [109, 33, 76, 332, 112]
products_inventory = get_list_or_404(Products, id__in=product_ids)

查询工作正常。但是,products_inventory 不一定与 product_ids 定义的元素具有相同的顺序(即,products_inventory 中的第一个元素不是 id:109 的元素)。如何在 product_ids 定义的 products_inventory 中获得相同的订单?

最佳答案

如果您可以在数据库中进行排序,那么这个答案将对您有所帮助:get_list_or_404 ordering in django

如果 ID 值的顺序之间没有关系,则必须在 python 中进行排序。

首先创建一个将 ID 转换为整数 i 的字典,这样当对两个 ID 的 i 进行排序时,它们的顺序就会正确(即它们的位置在 product_ids 中):

ordering = {id: i for i, id in enumerate(product_ids)}

现在创建一个函数,它接受一个产品并返回一个值,该值在排序时会将产品按正确的顺序排列:

def keyfn(product):
return ordering[product.id]

最后,根据我们的keyfn定义的key对产品库存进行排序:

product_inventory.sort(key=keyfn)

关于python - 在 Django 的 get_list_or_404 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52172077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com