gpt4 book ai didi

python - Django:跨三个模型进行注释

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:25 26 4
gpt4 key购买 nike

我想对 QuerySet 进行复杂的 annotate 调用,但我不知道如何构建它。你能帮忙吗?

我将尝试简化我的设置:

我有 3 个模型:MovieActorCasting

每个 Casting 都有一个指向 Movie 和一个 Actor 的外键,以及一个 CharField 用于 角色

例如,Casting 可以是约翰尼德普在加勒比海盗中扮演 jack 斯派洛。

我想要一个电影列表,每部电影都会有一个注释,说明约翰尼德普在该电影中扮演的角色。如果他没有在那部电影中演出,则应该是 None

请注意,我给出了一个特定的 Actor ,我不想遍历所有 Actor 。

最佳答案

您可以使用 Case(..) 对象来.annotate(..):

Movie.objects.annotate(
role=Min(Case(
When(casting__actor=my_actor, then=F('casting__role')),
default=None
))
)

现在 Movie 对象将具有一个属性 .role 来保存该 Actor 的 role

如果 actor 有多个角色,它将取字典序最小的一个,如果没有这样的 actor,它将取 None

关于python - Django:跨三个模型进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716792/

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