2017-07-12 48 views
1

我要來標註查詢集與相關對象,該對象是否存在,或與其他領域如果沒有:檢查Case 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*到檢查外鍵是否存在。

回答

3

橡膠躲開了這一個馬上:

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