我的模型上的所有CRUD操作都有一个简单的CBV(让我们说Book)。我应该如何通过id实现获取对象并获取所有对象的列表?似乎有很多选择,如:
只需创建两个单独的类Book和BookList。
在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)
覆盖View.dispatch方法,以便在没有提供id的情况下调用get_list()方法。
等...
那么最好的方法是什么?
答案 0 :(得分:0)
crud 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
您可能需要相应地创建序列化程序。