如何在Django中创建日期和时间字段的选择选项卡?

时间:2013-09-22 06:33:44

标签: python django datetime

查看了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)

但我没有按照自己的意愿得到正确的行为。

3 个答案:

答案 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做什么:

如果您使用datepicker插件进行日期和屏蔽输入时间

我们假设您的请求是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