0

浏览过 DateField、TimeField、DateTimeField 相关文档,但我似乎找不到我需要的东西。我只想选择月、日、年、小时、分钟、(AM/PM) 类型选项。我试过使用'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)

但我没有得到我想要的正确行为。

4

3 回答 3

1

你肯定想使用这个片段。除非您是 django 忍者并且想要汇总自己的多小部件,否则您需要将一组选择输入转换为一个日期时间值。

这个小部件是最接近的,无需使用任何 js 插件。

于 2013-09-22T09:33:52.843 回答
1

您可能对使用 jquery 日期选择器或 jquery 日期时间选择器感兴趣。

http://jqueryui.com/datepicker/

http://trentrichardson.com/examples/timepicker/

在这两个站点上都有示例,因此您可以看到它的实际效果:)

于 2013-09-22T06:51:42.547 回答
0

您可以使用Erfin提到的datepicker plagin(我也推荐它以及bootstrap的 datepicker )作为日期和时间的掩码输入或只是简单的选择。无论如何,您应该发送带有日期时间信息的请求。在 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        
于 2013-09-22T14:51:44.033 回答