Django Tempus Dominus Datetimepicker时间和日期转换

2024-04-27 20:07:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经尝试了几个小时来更改我的datetimepicker(引导程序4的Tempus DOminus)的格式,但是格式不会改变,所以现在我正在尝试找到一种更好的方法,在后端将它插入到我的Django模型或数据库时进行转换。在

问题是,datetimepicker当前将用户选择的日期作为

2018年2月10日下午2:15

问题是,我需要将其插入数据库,如下所示:

2018-10-02 02:15:00

有没有更好的方法,我可以自动转换,以适应我需要的djano模型时间戳格式?在

我想应该有一种方法可以让我从datetimepicker查看AM/PM并相应地将其设置为02:00:00或14:00:00。在

在我的模型.py在

from django.db import models

class CountryDirectorRequestTable(models.Model):
    countryDirectorRequestTo = models.CharField(max_length=50,choices=REQUEST_TO, default='accountant',verbose_name="Request To")
    countryDirectorRequestDetail = models.TextField(max_length=3000,null=False,blank=False, verbose_name="Request Detail",help_text="Content not more than 3000 letters")
    countryDirectorRequestExpectingDateAndTime = models.DateTimeField(default=timezone.now, verbose_name="Expecting Date and Time")

在我的表单.py在

^{pr2}$

在我的视图.py在

from django.shortcuts import render, redirect
from .form import CountryDirectorRequestForm


def countryDirectorRequestView(request):
if request.method == 'POST':
    form = CountryDirectorRequestForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('countryDirector:countryDirectorRequest_detail')
else:
    form = CountryDirectorRequestForm()
return render(request, 'CountryDirector/countryDirectorRequest.html',{'form':form})

日期选择器正确地呈现,但是在单击提交按钮之后,我得到了验证错误:“输入一个有效的日期/时间)


Tags: 方法namefrompy模型importform数据库
1条回答
网友
1楼 · 发布于 2024-04-27 20:07:39

我能让这个工作起来。我发现的问题是minDatemaxDate必须作为datetime值而不是date值提供。在

也就是说,这是不正确的:

'minDate': '2009-01-20',
'maxDate': '2017-01-20',

相反,这是正确的:

^{pr2}$

在视图中,还要确保使用TestForm,而不是{}。在

一个友好的提示是,您可能希望了解PEP-8语法和代码格式化程序Black,以了解Python编码惯例。这些年来,我发现它为我节省了很多时间、精力和挫折感。https://black.readthedocs.io/en/stable/

下面是一个工作示例:

在模型.py在

from django.db import models
from django.utils import timezone


class CountryDirectorRequestTable(models.Model):
    countryDirectorRequestExpectingDateAndTime = models.DateTimeField(
        default=timezone.now,
        verbose_name="Expecting Date and Time",
    )

在表单.py在

from django import forms

from .models import CountryDirectorRequestTable

from tempus_dominus.widgets import DateTimePicker


class TestForm(forms.ModelForm):
    country_director = forms.DateTimeField(
        widget=DateTimePicker(
            options={
                'useCurrent': True,
                'collapse': False,
                'minDate': '2009-01-20 00:00:00',
                'maxDate': '2017-01-20 23:59:59',

                # Calendar and time widget formatting
                'time': 'fa fa-clock-o',
                'date': 'fa fa-calendar',
                'up': 'fa fa-arrow-up',
                'down': 'fa fa-arrow-down',
                'previous': 'fa fa-chevron-left',
                'next': 'fa fa-chevron-right',
                'today': 'fa fa-calendar-check-o',
                'clear': 'fa fa-delete',
                'close': 'fa fa-times'
            },
            attrs={
                'append': 'fa fa-calendar',
                'icon_toggle': True,
            }
        )
    )

    class Meta:
        model = CountryDirectorRequestTable
        fields = (
            'country_director',
        )

在视图.py在

from django.shortcuts import render, redirect
from .forms import TestForm


def test_view(request):
    if request.method == 'POST':
        form = TestForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('test-form')
    else:
        form = TestForm

    return render(
        request,
        'test_app/test.html',
        {'form': form},
    )

我希望这有帮助-祝你好运!在

相关问题 更多 >