2016-04-16 7 views
0

私のモデル上のすべてのCRUD操作のための単純なCBVがあります(Bookと言う)。どのようにIDでオブジェクトを取得し、すべてのオブジェクトのリストを取得する実装する必要がありますか?Django CBV listを取得し、オブジェクトを取得

  1. 2つの別々のクラスBookとBookListを作成するだけです。

  2. getメソッドの内部に何らかのディスパッチャを記述します。

    class BookView(View): 
        def get(self, request, *args, **kwargs): 
         if 'id' in self.kwargs: 
          self.get_object(request, *args, **kwargs) 
         else: 
          self.get_list(request, *args, **kwargs) 
    
  3. オーバーライドView.dispatch方法ないIDが設けられていない場合、それはget_list()メソッドを呼び出すようにします。

等...

だから最善の方法は何ですか?

答えて

0

粗いAPIの最も良い方法は、DRFを使用し、generics.ListCreateAPIViewのサブクラスを使用してすべてのオブジェクトのリストを取得するか、新しいオブジェクトを作成することです。

generics.RetrieveUpdateDestroyAPIView idでオブジェクトを取得するか、idでオブジェクトを破棄して更新する。このように:

class BookDetail(generics.RetrieveUpdateDestroyAPIView): 
    """ 
    Retrieve, update or delete a book instance. 
    """ 

    queryset = Book.objects.all() 
    serializer_class = BookSerializer 

おそらくシリアライザを作成する必要があります。

+0

これにフレームワークを使用するのは残念ですか?私は今かなり簡単なコードを持っています。とにかく、上書きされたView.dispatchを使って新しいクラスを作成し、そのビューを継承しました。 –

関連する問題