gpt4 book ai didi

python - 显示文本框而不是日期选择器的 DateTimeField

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:38 26 4
gpt4 key购买 nike

正在显示当前日期,但它显示在文本框中。我如何获得日期选择器???

models.py

class Comment(models.Model):
title = models.CharField(max_length=100)
text = models.CharField(max_length=100)
notes = models.CharField(max_length=100)
date = models.DateTimeField("Date", default=datetime.date.today)

def __str__(self):
return self.title

forms.py

class MyCommentForm(forms.ModelForm):

class Meta:
model = Comment
fields = ['title', 'text', 'notes', 'date']

views.py

def add_model(request):
if request.method == 'POST':
form = MyCommentForm()
if form.is_valid():
model_instance = form.save(commit=False)
model_instance.timestamp = timezone.now()
model_instance.save()
# return redirect('/')
else:
form = MyCommentForm()
return render(request, "form/my_template.html", {
'form': form,
})

my_template.html To render the form elements

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="submit"/>
</form>
</body>
</html>

最佳答案

假设:您只是让 Django 在模板中按原样呈现字段。

Django 本身不提供日期选择器小部件,正如您所发现的,Django 用于表示 DateTimeField 的“小部件”是一个简单的文本字段。

要使用日期选择器小部件进行此渲染,您有三个选项:(如果你只是想要一个解决方案,请直接跳到第三个)

datetime-localtype 传递给内置 Django 小部件的小部件

(不是推荐的方法)

您可以将类型传递给小部件,以便让它提供在浏览器中呈现的特定字段类型。例如

from django.forms.widgets import DateTimeWidget

class MyCommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['title', 'text', 'notes', 'date']
widgets = {
'date': DateTimeInput(attrs={'type': 'datetime-local'}),
}

这将导致字段具有 datetime-local 类型,并且某些浏览器将呈现用于输入日期和时间的小部件。

执行此操作时需要注意的一个重要事项是,字段的 的日期格式(因为它将在模板中呈现)非常重要。它必须是 RFC 3339 格式(例如 2001-10-08T22:47:31-07:00 - PyPI 中有一个 RFC 3339 包 https://pypi.python.org/pypi/rfc3339/ )

使用客户端日期时间选择器

浏览器对 native 日期时间小部件的支持很差,并且让 Django 的输出与 datetime-local 字段所需的值相匹配很烦人。幸运的是,有很多 javascript 库可以提供日期选择器(bootstrap 有一个,比如 Flatpickr )

使用包含日期小部件的 Django 插件

有一些插件(例如 django-datetime-widgetdjango-bootstrap3-datetimepicker )允许您使用 Python 类在 Django 表单中添加小部件,然后将呈现基于 Javascript 的小部件在客户端。

如果您能找到一个您满意的插件(即它提供了您喜欢的日期/时间选择器),那么这肯定是我推荐的选项 - 主要是因为该插件应该请注意确保 Django 的输出采用基于 Javascript 的选择器可以处理的格式,并且字段中的结果是 Django 可以处理的。

我应该注意:我个人没有使用过任何这些日期时间选择器。

关于python - 显示文本框而不是日期选择器的 DateTimeField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42623490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com