gpt4 book ai didi

python - Django通过外键查询订单(反方向)

转载 作者:行者123 更新时间:2023-11-29 02:23:18 26 4
gpt4 key购买 nike

我有 2 个简单的模型,像这样:

class Obj(models.Model):
...

class Objdata(models.Model):
obj = models.ForeignKey(Obj)
...
datum = models.DateTimeField()

.我的目标是根据所属 Objdata 的最新数据条目选择所有 Objs。

也许对于 django 来说它已经太复杂了,但是在 sql 端查询它并不是那么复杂。

那么,有没有一种 Django 方法可以实现这一点,或者如何最好(?)实现它。目前我的解决方案有点复杂。


一个小的伪代码可能有助于实现我想要实现的目标:

lst = []
for elem in Obj.objects.filter():
try:
lst.append((elem.objdata_set.all().order_by('-datum')[0].datum, elem))
except:
lst.append((elem.datum, elem))
res = [e[1] for e in sorted(lst, reverse = True)]

最佳答案

如果我对您的代码的理解正确,您只想获取所有 Objs,并按最新的 Objdata.datum 排序。您可以通过聚合来做到这一点:

from django.db.models import Max
objs = Obj.objects.annotate(latest_data=Max('objdata__datum')).order_by('latest_data')

关于python - Django通过外键查询订单(反方向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27771166/

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