检查 Case 查询集语句中是否存在相关对象?

use*_*629 2 python django django-queryset

我想用相关对象注释查询集(如果该对象存在),或者使用另一个字段(如果不存在):

#models.py

class MyModel(Model):
  f1 = ForeignKey(MyRelated, related_name='f1')
  f2 = ForeignKey(MyRelated, related_name='f2', null=True)

#queryset

MyModel.objects.annotate(
  f=Case(
    When( *something* ,then=F('f2')),
    default=F('f1')
  )
)
Run Code Online (Sandbox Code Playgroud)

我需要知道的是用什么来代替来*something*检查外键是否存在。

use*_*629 6

橡胶立即避开了这个:

MyModel.objects.annotate(
  f=Case(
    When(f2__isnull=False ,then=F('f2')),
    default=F('f1')
  )
)
Run Code Online (Sandbox Code Playgroud)