数据库中的数据格式值更改

use*_*641 4 django django-models django-forms django-views

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'))  
Run Code Online (Sandbox Code Playgroud)

1.Date格式应该根据数据库中的值进行更改,如果value在db中,则显示第一种格式,不显示,否则部分正在执行.

2.格式的变化取决于条件.

3.我在这里面临问题,如果输入格式为此(%m /%d /%Y),则在表单上,​​日期值将被交换并保存在数据库中.如果给定日期是07/06/2013 - > 2013年6月7日,在表格发布后,它将在2013年7月6日 - > 2013年7月6日在现场查看.它无法正常工作.

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

谢谢

小智 5

最简单的解决方案是创建工厂以呈现表单:

def ReportFormFactory(date_format):
    class ReportForm(forms.ModelForm):
       manual_date = forms.DateField(
          input_formats=[date_format],
          widget=forms.DateInput(format=date_format)
       )
    return ReturnForm
Run Code Online (Sandbox Code Playgroud)

然后在视图中:

if int(dateformat):
    ReportForm = ReportFormFactory('%m/%d/%Y')
else:
    ReportForm = ReportFormFactory('%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

日期应仅在窗口小部件的presention阶段更改为字符串,在其他位置将日期时间保留为日期时间或日期对象