2016-04-16 107 views
0

我對我的模型(比如說Book)上的所有CRUD操作都有一個簡單的CBV。我應該如何實現通過id獲取對象並獲取所有對象的列表?似乎有很多選項,如:Django CBV獲取列表,獲取對象

  1. 只需創建兩個單獨的類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方法,這樣它會調用get_list()方法,如果沒有ID提供。

等等

那麼,什麼是最好的辦法嗎?

回答

0

crud API的最佳方法是使用DRFgenerics.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新的類,並從它繼承我的看法。 –