Обновление поля datetime в django с помощью ajax-вызова
У меня есть модель Profile, назначенная пользователю, которая содержит поле :
consent = models.DateTimeField(default=timezone.now, blank=True, null=True)
Я создал переключатель во фронтенде, в котором пользователь дает согласие на отслеживание данных или нет, и вызов ajax для обработки ответа. Все вроде бы работает нормально, печатает правильные результаты, но время даты не сохраняется в базе данных. Есть идеи, что не так?
def user_consent(request):
edited_user = request.user # if no user is specified, then we take the signed in user
if request.is_ajax and request.method == "GET" :
value = request.GET['toggle']
print(value)
if value == 'true':
edited_user.profile.consent = timezone.now()
edited_user.save()
print(edited_user.profile.consent)
return JsonResponse({"ok": "no errors"}, status=200)
else:
edited_user.profile.consent = None
edited_user.save()
print(edited_user.profile.consent)
return JsonResponse({"ok": "no errors"}, status=200)
return JsonResponse({"error": "there was an error"}, status=400)
Выводы, которые я получаю в консоли :
[01/Jul/2022 14:53:50] "GET /users/consent?toggle=false HTTP/1.1" 200 19
true
2022-07-01 14:53:51.911242+00:00
[01/Jul/2022 14:53:51] "GET /users/consent?toggle=true HTTP/1.1" 200 19
false
None
[01/Jul/2022 14:53:53] "GET /users/consent?toggle=false HTTP/1.1" 200 19
true
2022-07-01 14:53:55.522132+00:00
[01/Jul/2022 14:53:55] "GET /users/consent?toggle=true HTTP/1.1" 200 19
false
None
[01/Jul/2022 14:55:08] "GET /users/consent?toggle=false HTTP/1.1" 200 19
Не понимаю, вы задаете значение по умолчанию в модели, но внутри представления функции вы устанавливаете это поле как None (else case). какое значение вы ожидаете?