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

时间:2017-07-12 09:59:50

标签: 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')
  )
)

我需要知道的是代替*something*来代替外键是否存在。

1 个答案:

答案 0 :(得分:3)

橡胶立刻把这个丢掉了:

MyModel.objects.annotate(
  f=Case(
    When(f2__isnull=False ,then=F('f2')),
    default=F('f1')
  )
)