接下来看get_object(),它的意思是从数据库中获取单个对象: filter_kwargs封装查找条件,get_object_or_404负责在queryset中查找符合条件的对象(object)。 看到这里就发现了,默认查询条件是用pk,也就是说你的url中必须要用pk这个形参名进行分组捕获。否则就需要声明lookup_url_kwarg,如果url中的参数为name,那么loku...
def get_object_or_404(queryset, *filter_args, **filter_kwargs): try: # _get_object_or_404内部就是从闯传进来的queryset对象中使用get以关键字的形式查询,但是get方法会在2种情况下, 会抛出异常, 因此内部也做了异常处理 return _get_object_or_404(queryset, *filter_args, **filter_kwargs) ex...
def get(self, request, id): """序列化器数据,并返回给前端""" ds = get_object_or_404(DataStructure, pk=id) s = DataStructureSerializer(ds) context = s.data context['teams'] = [i[1] for i in ds.TEAM_CHOICES if i[1] != s.data['team']] context['knowledge_categories'] = [...
如果对象存在,则无需序列化,您只需检查是否从get_object引发了Http404
def post(自我,请求):关联公司 ID = request.data.get('关联公司') 如果 Associated_company_id 不为 None: Associated_company = get_object_or_404(ContactCompany, pk=linked_company_id) #print(关联公司.created_by.refrence_id_id,request.user.id) 如果 Associated_company.created_by.refrence_id_id ...
get_object(self):返回应用于详细视图的对象实例。默认使用lookup_field参数来过滤基本查询集。 filter_queryset(self, queryset):给定一个查询集,使用正在使用的过滤后端对其进行过滤,返回一个新的查询集。 get_serializer_class(self):返回应该用于序列化器的类。默认返回serializer_class属性。 类方法——钩子:下...
user = get_object_or_404(queryset, pk=pk) serializer = BookInfoModelSerializer(user) return Response(serializer.data) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 在设置路由时,可以如下操作 from django.urls import re_path ...
class UserDetailAPIView(APIView):permission_classes = [IsAuthenticated, IsOwner]def get(self, request, pk):user = get_object_or_404(User, pk=pk)self.check_object_permissions(request, user)return Response({'username': user.username, 'email': user.email}) ...
@detail_route(methods=['get'],url_path='detail_self')defdetail(self,request,pk=None):music=get_object_or_404(Music,pk=pk)result={'singer':music.singer,'song':music.song}returnResponse(result,status=status.HTTP_200_OK) 以上面這個例子來說, URL pattern:/api/music/{pk}/detail_self/, ...
objects.filter() client = get_object_or_404(queryset, pk=pk) serializer = ClientSerializer(client) return Response(serializer.data) class MailDropViewSet(viewsets.ViewSet): serializer_class = MailDropSerializer def list(self, request, client_pk=None): queryset = MailDrop.objects.filter(client=...