簡體   English   中英

Django:注釋三個模型

[英]Django: Annotate across three models

我想通過QuerySet進行復雜的annotate調用,但我不知道如何構建它。 你能幫忙嗎?

我將嘗試簡化設置:

我有3個模型: MovieActorCasting

每個Casting都有一個MovieActor的外鍵,以及一個roleCharField

例如, Casting可能是約翰尼·德普(Johnny Depp)在加勒比海盜中扮演傑克·斯派洛(Jack Sparrow)。

我想獲取電影列表,每部電影都有一個注釋,說明約翰尼·德普在該電影中扮演的角色。 如果他沒有參加那部電影,那就應該是None

請注意,我給的是特定的演員,我不想討論所有的演員。

您可以使用Case(..)對象對此進行.annotate(..)

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

現在, Movie對象將具有屬性.role ,該屬性持有該演員的role

如果角色有多個角色,則將采用字典上最小的角色;如果沒有此類角色,則將采用None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM