gpt4 book ai didi

python - 如何在 Django 中订购反向外键?

转载 作者:行者123 更新时间:2023-12-05 04:17:30 25 4
gpt4 key购买 nike

我们使用的是 Django 1.4。我们有一个 A 类,它有一个与之相关的 History 类。 A 的任何单个对象都可以有多个 History 对象。

History 类具有到其他类的外键,例如 BusinessUnit

我想按 last 历史对象对 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>')

这样,对于每个 A 对象,您可以筛选出最后一个 History 相关对象,并根据关联的 business_unit 进行排序。仅使用 history_set__business_unit 将按业务单位的 ID 排序,因此对于任何有意义的排序,您需要决定要排序的 business_unit 属性。

关于python - 如何在 Django 中订购反向外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22744019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com