2017-04-16 3 views
1

ListAPIViewを使用してクエリーセットから自分のデータを操作しようとしています。私は単純なPythonでクエリを書いていましたが([ここ] [1])、これはDjangoで動作させることができませんでした。Djangoのクエリーセットで関数を実行する

私もget_querysetを使ってみましたが、さまざまなエラーが発生しますが、何か間違っています。以下のコードでは、'TagList' should either include a queryset attribute、またはoverride 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.ListAPIViewにはretrieve方法がないので、あなたはgenerics.RetrieveAPIViewではなくgenerics.ListAPIViewを実装する必要があります。 (私はちょうどTask.objects.all() ``の結果を取得しています)

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'機能が動作しますので、私は右の結果を得ていないのです:次のコードは動作するはずです。私は 'retrieve'の側にトレースバックを入れて、それは – Ycon

+0

と呼ばれることはありません。私はちょうど気付いた...あなたは' generics.RetrieveAPIView'から継承してはいけませんか? 'generics.ListAPIView'は' list() 'メソッドしか持っていません。 http://www.django-rest-framework.org/api-guide/generic-views/#retrievemodelmixin –

+0

そのメソッドを使って答えを試してください。 – Ycon

関連する問題