GVKun编程网logo

Django form.as_p DateField未将输入类型显示为日期

27

在这里,我们将给大家分享关于Djangoform.as_pDateField未将输入类型显示为日期的知识,同时也会涉及到如何更有效地Django--DateTimeField、Djangodatefi

在这里,我们将给大家分享关于Django form.as_p DateField未将输入类型显示为日期的知识,同时也会涉及到如何更有效地Django -- DateTimeField、Django datefield和timefield到python datetime、Django datefield按工作日/周末过滤、Django DateField默认选项的内容。

本文目录一览:

Django form.as_p DateField未将输入类型显示为日期

Django form.as_p DateField未将输入类型显示为日期

在我的第一个Django应用程序上工作,我有一个模型,其中定义了some DateFields,然后ModelForm关闭了该模型,即

models.py

class MyModel(models.Model):    ...    my_date = models.DateField(''my date'')    ...class MyModelForm(ModelForm):    class Meta:        model = MyModel        fields = ''__all__''

views.py

def show(request):    form = MyModelForm    template_name = ''myapp/show.html''    return render(request,template_name,{''form'':form})

然后在我的html中使用.as_pdjango为我呈现表单

<form action="/show/" method="post">{% csrf_token %}{{ form.as_p }}<input type="submit" value="Submit" /></form>

但是DateFields具有输入类型的文本,而不是日期。有办法改变吗?

答案1

小编典典

您可以创建一个自定义窗口小部件:

from django import formsclass DateInput(forms.DateInput):    input_type = ''date''class MyModelForm(forms.ModelForm):    class Meta:        model = MyModel        fields = ''__all__''        widgets = {            ''my_date'': DateInput()        }

Django -- DateTimeField

Django -- DateTimeField

默认为时区时间时,需要导入django内置的timezone模块

from django.utils import timezone

create_at = models.DateTimeField("日期", default=timezone.now)

默认为当天时,需要导入python内置的datetime模块

from datetime import date
date = models.DateField(''日期'', default=date.today)

DateTimeField的两个重要参数:(参数互斥,不能共存)
auto_now:每当对象被保存时将字段设为当前日期,常用于保存最后修改时间。
auto_now_add:每当对象被创建时,设为当前日期,常用于保存创建日期(注意,它是不可修改的)。
设置上面两个参数就相当于给field添加了editable=False和blank=True属性。
如果想具有修改属性,请用default参数。

pub_time = models.DateTimeField(auto_now_add=True)

 

Django datefield和timefield到python datetime

Django datefield和timefield到python datetime

我有一个带有事件的单独Datefield和Timefield的Django模型。有没有一种方法可以将其转换为python
datetime对象,以便我可以精确地查询即将发生的事件?目前,我只知道第二天的到来。

models.py

event_time = models.TimeField()event_date = models.DateField()

基本上,我可以过滤一分钟,甚至一秒钟吗?

谢谢。

答案1

小编典典

DateTimeField改用(请参见文档中的本节)。转换datetime.datetime为会由Django自动为您处理。

DateField导致datetime.date和一个datetime.time对象。您可以replace用来将这些值合并成一个更新的date

>>>今天= datetime.datetime.today()>>>今天datetime.datetime(2012,3,31,11,6,5,182371)>>>时间= datetime.time(11,30)>>> today.replace(小时=时间。小时,分钟=时间。分钟)datetime.datetime(2012,3,31,11,30,5,182371)

请注意,date现在的结果为11.30。还要注意today,它没有被修改,它只是计算一个新的日期和时间。如您所见,由于两个值都存储在单独的字段中,因此您现在必须进行合并。因此DateTimeField,如果您能够修改模型的字段,那么a是一个更好的选择。

Django datefield按工作日/周末过滤

Django datefield按工作日/周末过滤

我的数据库中有一个date_created字段:

date_created = models.DateField(auto_now_add=True)

有什么办法可以按周末/工作日筛选date_created?我知道python的date.weekday()根据星期几返回0-6,所以我想使用类似以下内容:

apps.objects.filter(date_created__weekday >=5) // filter by weekend

Django DateField默认选项

Django DateField默认选项

我有一个具有日期时间字段的模型:

date = models.DateField(_("Date"), default=datetime.now())

当我在内置的django admin中检查该应用程序时,DateField还会附加时间,因此,如果你尝试保存它,则会返回错误。如何设置默认的日期呢?(datetime.today()也不起作用)

答案1

小编典典

这就是为什么你应该始终导入基本datetime模块:import datetime而不是该datetime模块中的类的原因from datetime import datetime

你犯的另一个错误是使用实际调用默认的函数()。这意味着所有模型都将在首次定义类时获得日期-因此,如果你的服务器在不重新启动Apache的情况下工作了几天或几周,则所有元素的初始日期都将相同。

因此,该字段应为:

import datetimedate = models.DateField(_("Date"), default=datetime.date.today)

关于Django form.as_p DateField未将输入类型显示为日期的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Django -- DateTimeField、Django datefield和timefield到python datetime、Django datefield按工作日/周末过滤、Django DateField默认选项的相关信息,请在本站寻找。

本文标签: