2017-04-16 75 views
1

我正在嘗試使用ListAPIView來處理來自查詢集的數據。我首先在普通的Python中編寫了查詢([here] [1]),但一直無法在Django中使用。在Django的查詢集上運行函數

我得到各種錯誤,因爲我也嘗試過使用get_queryset,但我做錯了什麼。使用下面的代碼,我得到'TagList' should either include a queryset attributeoverride the get_queryset() method。作爲錯誤

以下代碼告訴我global name 'instance' is not defined

class TagList(generics.RetrieveAPIView): 
    serializer_class = TagSortSerializer 
    def retrieve(self, request, *args, **kwargs): 
     json_data = instance.tag.all() 
     pass 

回答

0

您需要實現generics.RetrieveAPIView而不是generics.ListAPIView因爲在generics.ListAPIView沒有retrieve方法。下面的代碼應該工作:

class TagList(generics.RetrieveAPIView): 
    serializer_class = AllSerializer 

    def retrieve(self, d): 
     if d.tag.exists(): 
      ret = {} 
      (level_one,) = [tagd for tagd in d.tag.all() if tagd.taglevel == 1] 
      ret.update(level_one) 
      ret.tag = [tagd for tagd in d.tag if tagd.taglevel != 1] 
      newdata = [retrieve(d) for d in Task.objects.all()] 
     else: 
      print("no tag") 
     return newdata() 
+0

謝謝,但只有'get_querset'函數運行,所以我沒有得到正確的結果(我剛開Task.objects.all()''的結果) 。我把回溯放在'retrieve'的一側,它不叫 – Ycon

+0

我剛剛意識到...你不應該從'generics.RetrieveAPIView'繼承嗎? 'generics.ListAPIView'只有一個'list()'方法。 http://www.django-rest-framework.org/api-guide/generic-views/#retrievemodelmixin –

+0

請嘗試使用該方法的答案,然後 – Ycon