django - 如何在 Django model.object.values() 中对列字段进行排序

标签 django django-models

我正在用这个

objects = Model.objects.values('var1', 'var2', 'var4')

我使用的IN模板

{% for fieldname in object.keys %}<th>{{ fieldname }}</th>{% endfor %}

但是字段名称以任意顺序出现,例如

var4---var1----var2

我希望它们看起来像我在函数中提供的那样

var1---var2----var4

这可能吗

最佳答案

最简单的解决方案是仅使用 values_list,它返回元组并相应地更改您的模板。 https://docs.djangoproject.com/en/1.3/ref/models/querysets/#django.db.models.query.QuerySet.values_list

如果出于某种原因,您想继续使用 dict-s,并想要一个“自动神奇”的解决方案,您必须做大量工作:

  1. 子类 Django 的 ValuesQuerySet,将其命名为 ex。 OrderedValuesQueryset 并将其 iterator 方法更改为使用 OrderedDict http://docs.python.org/dev/library/collections.html#collections.OrderedDict

  2. 创建一个 Queryset 子类,其中 它的 .values 方法返回一个实例 您的OrderedValuesQuerySet

  3. 创建自定义models.Manager 其中的类是 get_query_set 方法使用您的自定义QuerySet 从2开始。
  4. 设置要在模型中使用的自定义管理器。请参阅https://docs.djangoproject.com/en/1.3/topics/db/managers/#custom-managers

现在您尝试做的事情将在该模型上自动起作用。您还可以将自定义管理器设置为与对象不同的属性,以保持默认管理器可用。

关于django - 如何在 Django model.object.values() 中对列字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609847/

相关文章:

python - 尝试使用 Python (Django) 格式化货币时出现问题

mysql - Django mysql count distinct 给 postgres 不同的结果

django - 如何使用 django.core.files.storage.get_available_name?

python - Django 中的模型未定义

Django - 显示一个 ModelForm 外键字段

python - Django - AttributeError : 'NoneType' object has no attribute 'first_name'

php - 从 PHP 站点执行 python 脚本——我需要 Django 吗?可以在树莓派上完成吗?

python - Django分页: switch between paginated/non-paginated ListView

python - Django:使用 FileField 实例读取上传的 CSV 文件

python - Django - auto_now 在 models.DateTimeField 中使用什么时区?