gpt4 book ai didi

Django基于M2M关系上的多个字段注释多个对象

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

我想高效地注释模型 A基于模型上某些字段的对象 B它与 A 具有简单的多对多关系(不使用直通模型) .一个皱是我必须找到最老的B每个A (使用 B.created_timestamp )然后使用 B.name 填充.我想使用 ORM 而不是原始 SQL。

我试过这个,但它不正确:

a_qs = A.objects.filter(id__in=ids)
ordered_qs = a_qs.order_by('-b__created_timestamp')
oldest_qs = Subquery(ordered_qs.values('b__name')[:1])
result = list(a_qs.annotate(name=oldest_qs))

这注释了每个 A具有相同的最早名称 B全部 B s 相关 A ,但我想要最老的 B其中关联 B s 每个 A .

最佳答案

您忘记设置 OuterRef https://docs.djangoproject.com/en/2.2/ref/models/expressions/

b_qs = B.objects.filter(a=OuterRef('pk')).order_by('-created_timestamp')
a_qs = A.objects.filter(id__in=ids).annotate(oldest_name=Subquery(b_qs.values('name')[:1])
result = list(a_qs)

关于Django基于M2M关系上的多个字段注释多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998274/

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