2016-05-03 61 views
1

這是我的跟蹤模型。給定一個用戶ID,我想所有的用戶,鑑於用戶以下基於內部的加盟target_id的將SQL隱藏到django ORM(內部連接子選擇)

class Follow(Activity, BaseModel): 
    user = models.ForeignKey(
     settings.AUTH_USER_MODEL, related_name='following') 
    target = models.ForeignKey(
     settings.AUTH_USER_MODEL, related_name='follower') 

這是與該原始的SQL查詢來實現的,因爲我找的所有如下user.id 1

SELECT * 
FROM (SELECT target_id 
     FROM auth_user 
       INNER JOIN api_follow 
        ON auth_user.id = api_follow.user_id 
     WHERE api_follow.user_id = 1) AS targets 
     INNER JOIN auth_user 
      ON targets.target_id = auth_user.id; 

如何在djangos orm中有效地執行此操作?我需要一個用戶查詢集,以便我可以傳遞給我的UserSerializer。

回答

0

查找指定用戶ID的所有追隨者:

User.objects.filter(follower__user=id)

+0

返回這是我的用戶的追隨者用戶的queryset的,我想我的用戶在以下誰 – user1152226