如何从模型获取字段值

问题描述 投票:0回答:1

我有一个用于在某些领域进行注册的模型。所有字段都是我通过这种形式填写的模型。

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) 

我如何在request.session [“ date”]中写入date_register值?

django
1个回答
0
投票

默认情况下,django使用JSONSerializer,并且它不能转储日期时间对象。

最简单的解决方案是将PickleSerializer用作SESSION_SERIALIZER,但可能会导致性能问题(docs:https://docs.djangoproject.com/en/3.0/ref/settings/#std:setting-SESSION_SERIALIZER

[另一种方法-根据Django序列化器编写自定义json序列化器,但具有转储datetime对象的默认功能,或在保存到会话之前将日期简单转换为字符串格式或时间戳。


0
投票

代替Registration.objects.create(...),您可以使用.save方法:

obj = Registration()
obj.fio = form.cleaned_data["fio"]
...
obj.save()
request.session["date"] = obj.date_register
© www.soinside.com 2019 - 2024. All rights reserved.