как получить значение поля из модели - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть модель для регистрации с некоторыми полями. Все поля являются моделями, которые я заполняю через форму следующим образом.

def get_name(request):
if request.method == 'POST':
    user_code = generate_code(8)
    subject = 'code' 
    message = user_code
    phone=request.POST['phone']
    form = NameForm(request.POST)
    if form.is_valid():
        date_use = form.cleaned_data.get("date_visit")
        time_use = form.cleaned_data.get("time_visit")
        purpose_use = form.cleaned_data.get("purpose")
        if Registration.objects.filter(date_visit=date_use,time_visit=time_use,purpose=purpose_use).count()==0:
            Registration.objects.create(fio=request.POST['fio'],phone=request.POST['phone'],date_visit=request.POST['date_visit'],time_visit=request.POST['time_visit'],
                number_car=request.POST['number_car'],purpose=request.POST['purpose'],
                tso=request.POST['tso'])
            request.session["phone"] = phone
            request.session["code"] = user_code
            return HttpResponseRedirect('endreg')
else:
    form = NameForm()
return render(request, 'registers/detail.html', {'form': form})

Модель также имеет поле

date_register = models.DateTimeField(verbose_name = 'date register', auto_now_add=True) 

как я могу записать значение date_register в request.session ["date "]?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Вместо использования Registration.objects.create(...) вы можете использовать .save метод:

obj = Registration()
obj.fio = form.cleaned_data["fio"]
...
obj.save()
request.session["date"] = str(obj.date_register)
0 голосов
/ 19 февраля 2020

По умолчанию django используется JSONSerializer, и он не может создавать дамп объектов даты и времени.

Самое простое решение - использовать PickleSerializer как SESSION_SERIALIZER, но это может вызвать проблемы с производительностью (документы: https://docs.djangoproject.com/en/3.0/ref/settings/#std: setting-SESSION_SERIALIZER )

Другой способ сделать это - написать свой собственный сериализатор json, основанный на сериализаторе django, но с функцией по умолчанию для дампа объектов datetime, или простое преобразование даты в строковый формат или метку времени перед сохранением в сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...