首页 > 解决方案 > Django Tempus Dominus TimePicker 格式

问题描述

当我使用 django-tempus-dominus TimePicker 小部件选择时间后提交表单时,我没有收到错误,但表单没有保存到数据库中,也没有显示在管理页面中。我收到一个视觉浏览器指示,表明我的 TimeFields 有问题。我可以从管理页面成功创建一个新表单,并且只在从我的表单页面提交时看到问题。我不确定这是否与我的 forms.py 中的 TimePicker 小部件的“格式”有关,是否与我的 settings.py 中的 TIME_INPUT_FORMATS 或其他问题有关。

如果我将 DateTimeField 与 DateTimePicker 小部件一起用于 start_time 和 end_time,并将小部件中的“格式”更改为“YYYY/MM/DD hh:mm: A”,而不是使用带有 TimePicker 小部件的 TimeField,则表单有效正确,提交后,可以从管理页面查看。

在我的 settings.py 中:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'America/Kentucky/Monticello'

DATETIME_INPUT_FORMATS = ['%Y/%m/%d %I:%M %p', ]

DATE_INPUT_FORMATS = ['%Y/%m/%d', ]

TIME_INPUT_FORMATS = ['%I:%M %p', ]

USE_I18N = True

USE_L10N = False

USE_TZ = True

在我的models.py中:

start_time = models.TimeField(
        verbose_name="Start Time", help_text="Time the issue first occurred.")

在我的 forms.py 中:

from django import forms
from tempus_dominus.widgets import DatePicker, TimePicker

from .models import DMDCTracker


class DMDCTrackerForm(forms.ModelForm):

    class Meta:
        model = DMDCTracker
        fields = ["date_issue_occurred", "start_time", "end_time", "number_of_csrs", "agents_affected", "ticket_number", "workstation_id",
                  "issue_location", "vpn_name", "server_name", "issue_category", "issue_description"]
        widgets = {
            'date_issue_occurred': DatePicker(
                options={
                    'format': 'YYYY/MM/DD',
                },
                attrs={
                    'append': 'fa fa-calendar',
                    'icon_toggle': True,
                },
            ),
            'start_time': TimePicker(
                options={
                    'format': 'hh:mm A'
                },
                attrs={
                    'append': 'fa fa-clock-o',
                    'icon_toggle': True,
                },
            ),
            'end_time': TimePicker(
                options={
                    'format': 'hh:mm A'
                },
                attrs={
                    'append': 'fa fa-clock-o',
                    'icon_toggle': True,
                },
            ),
        }

在我的 tracker_form.html 中:

{% extends 'base.html' %}

{% load crispy_forms_tags %}

{% block content %}

<form method="POST" action="." class="tracker-form">
    {% csrf_token %}
    <div class="container">
        <h2 class="mt-2 text-center">Track a New Issue</h2>
        <hr class="mt-0 mb-4">
        {{ form.date_issue_occurred|as_crispy_field }}
        <div class="row">
            <div class="col-6">
                {{ form.start_time|as_crispy_field }}
            </div>
            <div class="col-6">
                {{ form.end_time|as_crispy_field }}
            </div>
        </div>

浏览器中视觉指示的屏幕截图:

https://imgur.com/a/S51qsAm

标签: pythondjangotempus-dominus-datetimepicker

解决方案


推荐阅读