Uri*_*Uri 4 python sorting django
我们使用的是 Django 1.4。我们有一个类A,它有一个History与之相关的类。可以有许多与 的任何单个对象相关的 History 对象A。
该类History具有其他类的外键,例如BusinessUnit.
我想A按最后一个历史对象(如果有)对对象进行排序(按 排序History.logged_at)。
我尝试过order_by('history__business_unit'),但它不能正常工作。是否可以使用数据库进行这样的排序,还是必须使用Python进行排序?如果可能的话,我更喜欢使用数据库进行排序。
您必须注释最大相关日期,过滤最大日期等于历史日期的历史对象,并按属性排序business_unit。:
from django.db.models import Max, F
a = A.objects.annotate(last_date=Max('history_set__logged_at'))\
.filter(history_set__logged_at=F('last_date'))\
.order_by('history_set__business_unit__<attribute>')
Run Code Online (Sandbox Code Playgroud)
这样,对于每个A对象,您可以筛选最后一个History相关对象,并对关联的 进行排序business_unit。使用 justhistory_set__business_unit将按业务部门的 ID 进行排序,因此对于任何有意义的排序,您需要决定要business_unit排序的属性。
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |