数据库中的数据格式值更改 [英] data format value changes in database

查看:145
本文介绍了数据库中的数据格式值更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

forms.py

DATE_INPUT_FORMAT = (
    ('%d/%m/%Y','%m/%d/%Y')
)

class ReportForm(forms.ModelForm):
    manual_date = forms.DateField(input_formats = DATE_INPUT_FORMAT,
                      widget=forms.DateInput(format = '%d/%m/%Y'))  

1。日期格式应根据数据库中的值进行更改,如果值在数据库中,则显示第1种格式,否则为零,否则部分正在执行。

1.Date format should change depend upon the value in database,if value is in db,it shows the 1st format and for none ,else part is executing.

2.格式为更改取决于条件。

2.Formats are changing depends upon the condition.

3.我在这里面临问题,如果输入格式为(%m /%d /%Y),则在表单上日期的价值得到交换并保存在数据库中。如果给定的日期是2013年6月7日 - 2013年6月7日,在表单发布后,它被视为06/07/2013 - > 2013年7月6日。它不能正常工作

3.I am facing problem here,if the input format is of this (%m/%d/%Y),on form post the value of date gets interchange and saved in database.If the given date is 07/06/2013 -->7th june 2013,after form post it is viewed in the field as 06/07/2013 -->6th july 2013.It is not working properly.

需要帮助来解决这个问题。

Need help to solve this issue.

谢谢

推荐答案

这是动态更改输入格式的另一种方法。

Here is another way to change the input format dynamically

forms.py: / p>

forms.py:

class ReportForm(forms.Form):

    manual_time = forms.TimeField(input_formats = TIME_INPUT_FORMAT,
                      widget=forms.TimeInput(attrs={'size':'8','class':'time_field'}))
    manual_date = forms.DateField(widget=forms.DateInput(
                            attrs={'size':'15', 'id':'datepicker'}))

    def __init__(self, *args, **kwargs):
        # Get the date_format if present in parameters
        date_format = None
        if 'date_format' in kwargs:
            date_format = kwargs.pop('date_format')

        super(ReportForm, self).__init__(*args, **kwargs)
        # Dynamically set input date format
        if date_format:
            self.fields['manual_date'].input_formats = (date_format, )  

views.py

def when(request):
    """To view and save report time and date
    """

    if not 'report_id' in request.session:
        return redirect('incident.views.new_report')
    report_id = request.session['report_id']
    report = Report.objects.get(pk=report_id)
    try:
        settings = Settings.objects.get(user=request.user)
        dateformat = settings.date_format
        timeformat = settings.time_format
    except:
        dateformat = False
        timeformat = False
    date = None
    time = None
    if not report.manual_date:
        report.manual_date = datetime.datetime.now()

    if not report.manual_time:
        report.manual_time = datetime.datetime.now()
    manual_date = datetime.datetime.now()

    if int(dateformat):
        date_format = '%m/%d/%Y'    
        datelabel = "Date(mm/dd/yyyy)"
        createddate = report.created_date_time.strftime('%b %d %Y')
    else:
        date_format = '%d/%m/%Y'
        datelabel = "Date(dd/mm/yyyy)"
        createddate = report.created_date_time.strftime('%d %b %Y')

    date = report.manual_date.strftime(date_format)

    if int(timeformat):
        time = report.manual_time.strftime('%H:%M')
        timelabel = "Time(24hour)"
        createdtime = report.created_date_time.strftime('%H:%M')
    else:
        time = report.manual_time.strftime('%I:%M %p')
        timelabel = "Time(12hour)"
        createdtime = report.created_date_time.strftime('%I:%M %p')

    if request.method == 'POST':

        reportform = ReportForm(request.POST, date_format=date_format)
        if reportform.is_valid():
            report.manual_date = reportform.cleaned_data['manual_data']
            report.manual_time = reportform.cleaned_data['manual_time']
            report.user = request.user
            report.save()

            if not 'next' in request.POST:
                return redirect('incident.views.report_confirm')
            return redirect('incident.views.media')
    else:    
        reportform = ReportForm(instance=report, initial={'manual_date':date, 'manual_time':time})

    leftbar = common_leftbar(request, report_id)
    return render_to_response('incident/when.html',
                               {
                                'newreport_menu': True,
                                'when_tab': True,
                                'reportform': reportform,
                                'datelabel':datelabel,
                                'timelabel':timelabel,
                                'createddate':createddate,
                                'createdtime':createdtime,
                                'incident': report,
                                'leftbar':leftbar
                                 },
                                   context_instance=RequestContext(request))

这里的关键是在创建表单时动态更改DateField的 input_formats 属性。所以当你提交表单时,你应该通过 date_format ,默认的DateField应该把你的日期转换好。因为我已经在上面的代码中假设了一些东西,所以你必须将这段代码改编成你的代码。

The key here to change the input_formats attribute of DateField dynamically when you create the form. So when you submit the form, you should pass the date_format and the default DateField should convert your date fine. You will have to adapt this code into yours as I have assumed some of things in the code above.

这篇关于数据库中的数据格式值更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆