django - Django中的有序列表
问题描述
谁能帮忙,我想在 Django 中使用包含整数和字符串的模型中的字段返回一个基于 forloop 的有序列表,格式为 MM/1234。该循环应在 html 模板中按升序返回具有最小整数 (1234) 的值。
解决方案
理想情况下,您希望将模型更改为具有两个字段,一个整数和一个字符串,因此您可以编写一个基于整数 1 排序的查询集。然后,您可以定义模型的属性以返回self.MM+"/"+str( self.nn)
复合值,如果您经常需要使用它。但如果它是其他人的数据库模式,这可能不是一个选项。
在这种情况下,您必须将查询集转换为列表(一次读取所有数据行),然后在 Python 中而不是在数据库中对列表进行排序。如果列表包含数百万个对象,您可能会耗尽内存或使服务器瘫痪。count=qs.count()
是一个不会的数据库操作。
qs = Foo.objects.filter( your_selection_criteria)
# you might want to count this before the next step, and chicken out if too many
# also this simple key function will crash if there's ever no "/" in that_field
all_obj = sorted( list( qs),
key = lambda obj: obj.that_field.split('/')[1] )
推荐阅读
- vb.net - 谷歌翻译 API 身份验证
- c - (C) 指针 strcpy 出现分段错误
- c - 为什么 *p 为 (char*p = "hello world") 返回一个整数
- python - 使用函数时名称未定义错误但不使用函数时没有错误
- javascript - 如何在列表项文本中显示数组元素
- coldfusion - cfmail 中的 base64 注入攻击防护
- jenkins-pipeline - 在从节点上运行的 stageInitS4sdkPipeline 不再工作
- mobile - 如何将二维数组转换为FTLite所需的ByteBuffer类型?
- java - Java管理员权限执行错误
- typescript - 通过泛型缩小 TypeScript 索引类型