如何让用户在表单中选择日期和时间?

How to let user pick date AND time in the form?

提问人:usama hussain 提问时间:6/18/2023 最后编辑:usama hussain 更新时间:6/18/2023 访问量:41

问:

我正在尝试创建一种待办事项列表。大部分工作已经完成。我可以让用户输入任务及其详细信息,并选择开始和结束日期。

但是,由于我在表单中呈现字段,因此我希望用户能够轻松方便地输入日期和时间。为此,我添加了一个日期选择器类型的小部件。存储在数据库中的日期时间仍为 ISO 格式。

现在,问题是用户可以完全选择或输入日期。但它不允许用户输入时间。选择日期后,用户无法输入时间。

代码如下:

class TaskForm(ModelForm):
    class Meta:
        model = TaskModel
        exclude = ["completed"]
        widgets = {
            'title': TextInput(attrs={"class": "form-control"} ),
            'detail': Textarea(attrs={"class": "form-control"}),
            'start_time': DateInput(format = ['%d/%m/%Y %H:%M'], attrs={"type":"date", 'class': 'form-control datetimepicker-input', 'data-target': '#datetimepicker1'}),
            'end_time': DateInput(format = ['%d/%m/%Y %H:%M'], attrs={"type": "date", 'class': 'form-control datetimepicker-input'})  
        }

Model.py 文件是:

class TaskModel(models.Model):
    title = models.CharField(max_length=30)
    detail = models.TextField(blank=True)
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
    completed = models.BooleanField(blank = True, null=True)

其余的代码只是简单而传统的基于 Django 的视图和模板(如果您也需要,请告诉我)。

我还附上了一张表格的图像,让你看看它是什么样子的。Form depicting datetime picker widget

python django datetime bootstrap-5

评论


答:

0赞 weAreStarsDust 6/18/2023 #1

你可以从 django admin 尝试AdminSplitDateTime

from django import forms
from django.forms import ModelForm
from django.contrib.admin import widgets

class TaskForm(ModelForm):
    class Meta:
        model = TaskModel
        exclude = ["completed"]
        widgets = {
            'title': forms.TextInput(attrs={"class": "form-control"}),
            'detail': forms.Textarea(attrs={"class": "form-control"}),
            'start_time': widgets.AdminSplitDateTime(attrs={"class": "form-control"}),
            'end_time': widgets.AdminSplitDateTime(attrs={"class": "form-control"})  
        }

enter image description here

评论

0赞 usama hussain 6/22/2023
谢谢你的回答。但是,它对我不起作用。实际上,我遇到了这个令人难以置信的 github 存储库,它可以帮助我通过非常小的自定义来完成我的确切任务。github.com/monim67/django-flatpickr我能够使用这个 repo 实现我想要的东西。