在这里,我们将给大家分享关于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 -- DateTimeField
- Django datefield和timefield到python datetime
- Django datefield按工作日/周末过滤
- Django 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_p
django为我呈现表单
<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内置的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
我有一个带有事件的单独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按工作日/周末过滤
我的数据库中有一个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默认选项
我有一个具有日期时间字段的模型:
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默认选项的相关信息,请在本站寻找。
本文标签: