python - 进行条件 django 查询的更好方法

标签 python mysql django

是否有更好的方法来执行以下操作:

    if column_sort == 'size':
        if sort == 'desc':
            results = results.order_by('-size')
        else:
            results = results.order_by('size')
    elif column_sort == 'modified':
        if sort == 'desc':
            results = results.order_by('-last_modified')
        else:
            results = results.order_by('last_modified')
    else:
        if sort == 'desc':
            results = results.order_by('-path')
        else:
            results = results.order_by('path')
    results = results[:100]

例如,一种颠倒查询顺序的方法?

最佳答案

你只写一次代码怎么样?

valid_column_sorts = ['size', 'last_modified', 'path']

if column_sort in valid_column_sorts:
    if sort == 'desc':
        column_sort = '-' + column_sort
    results = results.order_by(column_sort)

哦,是的,我看到排序字段和值之间存在一些差异,在这种情况下,您需要一个简单的映射,例如 results.order_by(col_map[column_sort])

关于python - 进行条件 django 查询的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677104/

相关文章:

MySQL 语法错误

Django 装饰器将变量传递给 View

django - 通过 SSL 将 Django Postgres 连接到 AWS RDS

python - DRF 不适用于鹡鸰

python - 如何在 HTML 文件中包含 python 脚本?

python - 如何在 Kivy 中为标签添加背景颜色?

mysql - 基于计算的订单记录

python - 如何转录语音识别录音

python - ReportLab LongTable 布局错误 : too large on page

mysql - SQL触发器插入一个表,多次复制到另一个表