|
|
1
1
我过去解决类似问题时使用的一个过程是,通过一个查询选择所有项目,然后根据国家、地区、次区域进行排序。然后循环查询结果,并维护指向您看到的国家和地区的最后一个id的变量。如果饮料上的下一个国家/地区id与上一个id不匹配,则保存旧列表并开始新列表。下面是一些非常粗糙/混乱的pythoncode来解释这个想法:
正如您可能知道的,每个级别都有相同的逻辑:检查id是否已更改,是否已附加旧的x_obj并启动一个新的。最后五行用于处理最后一种饮料,因为在当前迭代过程中,您总是保存前一项(并且最后一项没有下一次迭代)。这是一个非常粗糙的过程,但我一直使用这个过程,只需要一个查询。 当我最终开始运行它时,我编辑了一些程序来修复我发现的错误。它似乎适用于我的简单测试用例。 |
|
|
2
1
每个国家、地区和次区域都是真实的对象,而不是字符串。这是业务端(位于templatetag中)。注意,我们在每次迭代中检查可用库存,只有在有库存的情况下才设置字典或列表项。
字典非常适合你的需要,只是你失去了排序的能力,所以我以后得想办法按字母顺序排序。 要遍历模板中的dict,请执行以下操作:
|
|
3
1
两个想法
当然,这些想法可以结合起来 |