У меня есть функция в DRF, где я хочу сказать системе обновить «всех», скажем, я хочу дать всем, кто вошел в систему сегодня, бесплатный приз и хочу сохранить этот список (я понимаю, что этот пример глупый, это просто я пытаюсь чтобы обобщить мой вариант использования). Он будет запрашивать, какие пользователи вошли в систему сегодня, а затем я хочу пройтись по этим пользователям, чтобы создать новое действие по вручению им приза.
Похоже, что при записи сохраняется только последнее значение в цикле.
time_threshold = datetime.now() - timedelta(hours=12)
signed_in_list = Activity.objects.filter(created__gte=time_threshold, activity="signed in")
for activity in signed_in_list:
serializer.save(user=activity.user_id, activity="gets free prize")
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
Я пытаюсь сделать так, чтобы для каждого идентификатора пользователя, возвращаемого из «signed_in_list», было написано новое действие.
Я ожидал, что для каждого user_id в цикле будет записана новая запись Activity, но она выполняет только последний user_id в цикле. Это заставляет меня думать, что serializer.save работает, но переопределяет себя каждый раз в цикле (по сравнению с выполнением записи в БД).