【问题标题】:django forms DateFielddjango表单日期字段
【发布时间】:2011-03-29 05:44:11
【问题描述】:

我的表单中有一个名为生日的字段,例如:

class Personal_info_updateForm(forms.Form):
   birthdate = forms.DateField(widget=SelectDateWidget(years=[y for y in range(1930,2050)]))
   ..
   ..

views.py

def personal_info(request):
    mc = MenuCategories()      
    listCategories = mc.getCategories()
    oe = OEConnector()
    if request.method == 'POST':
        f1 = Personal_info_updateForm(request.POST)
        print request.POST
        if f1.is_valid():
            first_name = f1.cleaned_data['first_name']
            last_name = f1.cleaned_data['last_name']
            c=[last_name,first_name]
            name = " ".join(c)
            print name
            birthdate = f1.cleaned_data['birthdate']
            birthdate_year,birthdate_month,birthdate_day=['','','']

            birthdate = [birthdate_year,birthdate_month,birthdate_day]
            c=" ".join(birthdate)
            print birthdate
            title = f1.cleaned_data['title']
            print title
            email = f1.cleaned_data['email']
            mobile = f1.cleaned_data['mobile']
            phone = f1.cleaned_data['phone']
            result = update_details(name,first_name,last_name,birthdate,email,mobile,phone)
            print result
            return HttpResponse('/Info?info="Congratulations, you have successfully updated the information with aLOTof"')

a1.html 我将整个表单称为

<form action="" method="POST">
    <table style="color:black;text-align:left; margin-left: 20px;">
        {{ form.as_table }}
    </table>
    <input type="submit" value="UPDATE">
</form> 

我希望将我的生日值存储在 Postgresql 中。但它不起作用,所以我研究了我需要将它转换为 DateTime 字段,因为日期字段对象完全不同。请告诉我如何转换,以便我可以摆脱这个问题。我把它当作一个字符串..

提前致谢

【问题讨论】:

    标签: django forms datefield


    【解决方案1】:

    根据 django 文档http://docs.djangoproject.com/en/dev/ref/forms/fields/#datefield,日期字段的值标准化为 Python datetime.date 对象。

    因此,如果您的模型中有 birthdate = models.DateField() 之类的东西,那么从表单中分配值应该是直截了当的。

    #views.py
    birthdate = f1.cleaned_data['birthdate']
    my_model_instance.birthdate = birthdate
    

    但是,如果您仍想将其转换为 DateTime,假设您已将模型字段更改为 DateTime,您可以:

    • 将表单的生日字段从 DateField 更改为 DateTimeField
    • 根据表单值创建 Python datetime.datetime 对象

    对于第二个选项,您需要使用以下格式创建一个 datetime.datetime 对象:

    import datetime
    bday = datetime.datetime(year, month, day)
    

    查看datetime 和[time][2] 上的python 文档了解更多信息。

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 2011-03-31
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 2015-04-13
      相关资源
      最近更新 更多