Джанго формы DateField - PullRequest
       9

Джанго формы DateField

2 голосов
/ 29 марта 2011

В моей форме есть поле с именем даты рождения, например:

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, потому что объект поля даты совершенно другой. Скажите, пожалуйста, как мне выполнить преобразование, чтобы я мог избавиться от этой проблемы. Я воспринимаю это как строку ..

Заранее спасибо

1 Ответ

1 голос
/ 29 марта 2011

Согласно документации 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)

Для получения дополнительной информации ознакомьтесь с документацией по Python по datetime и [time][2].

...