Home > Net >  How to patch several objects at the same time in Django Rest Framework?
How to patch several objects at the same time in Django Rest Framework?

Time:08-25

I'm creating an app in which notifications model exists. That is why I need a behavior like this: when a person requests the notification page, the field is_read which is boolean turns from default FALSE to TRUE. The trouble is that there could be many of objects, so how to set to TRUE all of them?

Model:

class Notification(models.Model):
    is_read = models.BooleanField(default=False)
    notification_from = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="notiffrom")
    notification_to = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="notifto")

View:

class UserNotificationView(ListModelMixin, GenericAPIView, CreateModelMixin):

    serializer_class = NotificationSerializer

    def get_queryset(self):
        notification_to = self.kwargs["notification_to"]
        return Notification.objects.filter(notification_to=notification_to)


    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

I know that there are bulk requests in Django but struggle with making them with DRF. Maybe there are some other ways?

CodePudding user response:

You could add the update function in the get_queryset function.

class UserNotificationView(ListModelMixin, GenericAPIView, CreateModelMixin):

    serializer_class = NotificationSerializer

    def get_queryset(self):
        notification_to = self.kwargs["notification_to"]
        queryset = Notification.objects.filter(notification_to=notification_to)
        queryset.update(is_read = True)
        return queryset

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
  • Related