gpt4 book ai didi

django prefetch_related & Prefetch 嵌套

转载 作者:行者123 更新时间:2023-12-05 00:48:25 28 4
gpt4 key购买 nike

我正在尝试返回,对于每个 UserProfile,它具有一对多 Subscription,它具有两个 Artist 的外键> 和 UserProfile,每个艺术家有许多 ReleaseGroupcount future 发布组,每个 UserProfile 有。

简而言之:我想返回每个用户拥有的所有订阅的即将发布的总数。

但是我在数数之前就卡住了……

    context['test_totals'] = UserProfile.objects.prefetch_related(
Prefetch('subscription_set', queryset=Subscription.objects.
prefetch_related(Prefetch('artist', queryset=Artist.objects.
prefetch_related(Prefetch('release_groups',
queryset=ReleaseGroup.objects.filter(
release_date__gte=startdate
), to_attr='rggg')), to_attr='arti')), to_attr='arts'))

在模板中访问 userprofile.arts|length 返回订阅总数,但 rgggarti 什么也不返回。如何做到这一点?

我尝试使用 filter(profile='userprofile)` 对 self 进行过滤,但这会返回错误。如果我可以过滤 self ,我可能可以让它工作?

最佳答案

经过 Nicholas Cluade LeBlanc 的大量帮助,下面是有效的查询:

UserProfile.objects.annotate(rgs=Count(
Case(

When(subscriptions__artist__release_groups__release_date__gte=startdate, then=F('subscriptions__artist__release_groups__release_date')),

When(subscriptions__artist__release_groups__release_date__lt=startdate, then=None),

output_field=DateField()
)
))

正如 Nicholas 所建议的,subscriptionsprofile related_query_nameSubscription 中设置的。

关于django prefetch_related & Prefetch 嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212021/

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