2017-12-20 6 views
4

Django Rest Framework에서 알림 응용 프로그램을 만들 수 있습니다. 사용자는 프런트 엔드에서 PATCH API를 사용하여 MARK READ를 MARK READ으로 알릴 수 있습니다. 대량 업데이트 데이터로이 작업을 수행 할 수 있습니까?Django Rest Framework에서 일괄 업데이트 데이터

단지 PATCH에 대해 하나의 알림 개체 아래이 시리얼 라이저와 뷰셋,하지만 난 필드 is_read = False

올바른 방법으로 편집

내 직렬 변환기가 공지로 모두를 수행 할 :

class NotificationEditSerializer(ModelSerializer): 
    class Meta: 
     model = Notification 
     fields = (
      'id', 
      'is_read' 
     ) 

내 뷰셋 :

from rest_framework.response import Response 
class NotificationListAPIView(ReadOnlyModelViewSet): 
    queryset = Notification.objects.all() 
    permission_classes = [AllowAny] 
    serializer_class = NotificationEditSerializer 
    lookup_field = 'id' 

    @list_route(methods=['PATCH']) 
    def read_all(self, request): 
     qs = Notification.objects.filter(is_read=False) 
     qs.update(is_read=True) 
     serializer = self.get_serializer(qs, many=True) 
     return Response(serializer.data) 

내 URL : @Bear 브라운

from rest_framework import routers 
router.register(r'notifications/read_all', NotificationListAPIView) 

덕분에

는 희망이 도움이!

답변

3

당신은 예를 들어 list_route를 사용하려고 할 수 있습니다

from rest_framework.response import Response 
from rest_framework.decorators import list_route 

class NotificationListAPIView(ReadOnlyModelViewSet): 
    #YOUR PARAMS HERE 

    @list_route() 
    def read_all(self, request): 
     qs = Notification.objects.filter(is_read=False) 
     qs.update(is_read=True) 
     serializer = self.get_serializer(qs, many=True) 
     return Response(serializer.data) 

을 API가 그것은이 오류가있어 ^YOUCURRENTURL/read_all/$ 자세한 내용

+0

marking-extra-actions-for-routing로 볼 수 있습니다 :라는 URL 키워드 인수로 호출 될 것으로 예상보기 NotificationEditAPIView을 " 신분증". URL conf를 수정하거나 뷰에'.lookup_field' 속성을 올바르게 설정하십시오. –

+0

아이디없이 이름 = '목록' –

+0

이것은 새로운 URL입니다. url (r '^ read_all/$', NotificationEditAPIView.as_view(), name = 'list'), –