查看了DateField,TimeField,DateTimeField相关文档,但我似乎找不到我需要的东西。我只想选择月,日,年,小时,分钟,(上午/下午)类型选项。我尝试使用'choice =',但没有得到我正在寻找的好行为。
** TL; DR:我只想要一种输入日期和时间的方式,而无需输入。我想要一个漂亮的下拉菜单**
class Event(models.Model):
event_name = models.CharField(max_length = 50)
date_time = models.DateTimeField()
date = models.DateField()
location = models.CharField(max_length = 30)
address = models.CharField(max_length = 30)
city = models.CharField(max_length = 30)
zip_code = models.CharField(max_length = 30)
state = models.CharField(max_length = 30)
description = models.TextField()
def __unicode__(self):
return self.event_name
class EventForm(ModelForm):
class Meta:
model = Event
这就是我现在拥有的。我已经删除了选择部分,我甚至尝试将自己的模型对象专用于日期和时间,但这并不顺利
我用这个尝试了......
DATE_CHOICES = (('Jan', "January"),
('Feb', "Feburary"),
('Mar', 'March'),
('Apr','April'),
('May ','May'),
('June','June'),
('July','July'),
('Aug','August'),
('Sept','Septemeber'),
('Oct','October'),
('Nov','November'),
('Dec','December')
)
class DateTime(models.Model):
month = models.CharField(max_length = 5, choices=DATE_CHOICES)
但我没有按照自己的意愿得到正确的行为。
答案 0 :(得分:1)
您可能对使用jquery日期选择器或jquery日期时间选择器感兴趣。
http://jqueryui.com/datepicker/
http://trentrichardson.com/examples/timepicker/
在这两个网站上都有示例,因此您可以看到它的实际效果:)
答案 1 :(得分:1)
您肯定想使用this snippet。除非你是一个django忍者,并想要推出自己的多个小部件,这就是将一组选择输入转换为一个日期时间值所需的内容。
这个小部件是你最接近的,不使用任何js插件。
答案 2 :(得分:0)
您可以使用datepicker plagin作为 Erfin (我也建议datepicker for bootstrap)了解日期和masked input的时间或只是简单的选择。无论如何,您应该发送带有日期时间信息的请求。在Django做什么:
我们假设您的请求是POST。您的日期将是一个字符串,其格式为您在javascript中指定的格式。它看起来像“31.01.2013”。时间就像“22:30”。
def write_datetime(request):
event = Event.objects.get(id=int(request.POST.get('id')))
from datetime.datetime import strptime
date = request.POST.get('date')
time = request.POST.get('time')
date_time = date + " " + time
event.date_time = strptime(date_time, "%d.%m.%y %H:%M"
event.save()
在这种情况下,从请求参数中生成日期时间字符串更简单,并重复这个简单的例子。
def def write_datetime(request):
year = request.POST.get('year')
month = request.POST.get('month')
# etc
date_time = "%s.%s.%s %s:%s" % (day, month, year, hours, minutes)
# etc