2014-03-05 27 views
0

我有一個以下模型:Django的表格 - DateTime字段顯示日期僅

class Sponsorship(models.Model): 
    sponsor = models.ForeignKey(Sponsor, related_name='sponsorships') 
    start_datetime = models.DateTimeField(null=True, blank=True) 
    end_datetime = models.DateTimeField(null=True, blank=True) 

,並形成模型是這樣的:

class SponsorshipForm(ModelForm): 

    class Meta: 
     model = Sponsorship 
     fields = ('start_datetime', 'end_datetime') 
     widgets = { 
      'start_datetime': forms.DateTimeInput(attrs={'class': 
                  'form-control'}), 
      'end_datetime': forms.DateTimeInput(attrs={'class': 
                  'form-control'}), 
     } 



SponsorShipsFormSet = inlineformset_factory(Sponsor, Sponsorship, 
               form=SponsorshipForm, extra=2) 

在視圖中我做平常:

SponsorShipsFormSet(instance=self.object) 

但當形式呈現,日期時間輸入字段只爲起息日,沒有時間。

爲什麼形式沒有日期和時間實例?

編輯

我印刷,在模板中,輸入字段的值:

{{ form.start_datetime.value }} 

和它確實有日期時間值,它應。

回答

1

好吧,這是一個在一百萬的見解!

這些麻煩的原因是從設置DATETIME_INPUT_FORMATS

我有什麼之前:

DATETIME_INPUT_FORMATS = (
    '%d %B %Y',    # '05 March 2014' 
    '%d %B %Y - %H:%M',  # '05 March 2014 - 08:07' 
    '%d %B %Y - %H:%M:%S',  # '05 March 2014 - 08:07:59' 
    '%d %B %Y - %H:%M:%S.%f', # '05 March 2014 - 08:07:59.0001' 

    '%d/%m/%Y %H:%M:%S.%f', # '25/10/05 14:30:59.000200' 
    '%d/%m/%Y %H:%M:%S',  # '25/10/05 14:30:59' 
    '%d/%m/%Y %H:%M',   # '25/10/05 14:30' 
    '%d/%m/%Y',    # '25/10/05' 

    '%d-%m-%Y %H:%M:%S.%f', # '25-10-05 14:30:59.000200' 
    '%d-%m-%Y %H:%M:%S',  # '25-10-05 14:30:59' 
    '%d-%m-%Y %H:%M',   # '25-10-05 14:30' 
    '%d-%m-%Y',    # '25-10-05' 

    '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' 
    '%Y-%m-%d %H:%M:%S',  # '2006-10-25 14:30:59' 
    '%Y-%m-%d %H:%M',   # '2006-10-25 14:30' 
    '%Y-%m-%d',    # '2006-10-25' 

    '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200' 
    '%m/%d/%Y %H:%M:%S',  # '10/25/2006 14:30:59' 
    '%m/%d/%Y %H:%M',   # '10/25/2006 14:30' 
    '%m/%d/%Y',    # '10/25/2006' 

    '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' 
    '%m/%d/%y %H:%M:%S',  # '10/25/06 14:30:59' 
    '%m/%d/%y %H:%M',   # '10/25/06 14:30' 
    '%m/%d/%y',    # '10/25/06' 
) 

什麼固定的問題,我有:

DATETIME_INPUT_FORMATS = (
    '%d %B %Y - %H:%M:%S.%f', # '05 March 2014 - 08:07:59.0001' 
    '%d %B %Y - %H:%M:%S',  # '05 March 2014 - 08:07:59' 
    '%d %B %Y - %H:%M',  # '05 March 2014 - 08:07' 
    '%d %B %Y',    # '05 March 2014' <- this line was first before 

    '%d/%m/%Y %H:%M:%S.%f', # '25/10/05 14:30:59.000200' 
    '%d/%m/%Y %H:%M:%S',  # '25/10/05 14:30:59' 
    '%d/%m/%Y %H:%M',   # '25/10/05 14:30' 
    '%d/%m/%Y',    # '25/10/05' 

    '%d-%m-%Y %H:%M:%S.%f', # '25-10-05 14:30:59.000200' 
    '%d-%m-%Y %H:%M:%S',  # '25-10-05 14:30:59' 
    '%d-%m-%Y %H:%M',   # '25-10-05 14:30' 
    '%d-%m-%Y',    # '25-10-05' 

    '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' 
    '%Y-%m-%d %H:%M:%S',  # '2006-10-25 14:30:59' 
    '%Y-%m-%d %H:%M',   # '2006-10-25 14:30' 
    '%Y-%m-%d',    # '2006-10-25' 

    '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200' 
    '%m/%d/%Y %H:%M:%S',  # '10/25/2006 14:30:59' 
    '%m/%d/%Y %H:%M',   # '10/25/2006 14:30' 
    '%m/%d/%Y',    # '10/25/2006' 

    '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' 
    '%m/%d/%y %H:%M:%S',  # '10/25/06 14:30:59' 
    '%m/%d/%y %H:%M',   # '10/25/06 14:30' 
    '%m/%d/%y',    # '10/25/06' 
) 

因此,洞察是:

當Django呈現在表格日期時間,它從讀DATETIME_INPUT_FORMATS並使用適合的第一種格式。因此,格式應該從具有最多細節的格式轉到具有最少細節的格式。

在另一方面,當Django從客戶端讀取日期時間輸入,它通過所有DATETIME_INPUT_FORMATS,直到找到適合如果沒有,日期時間將是無效的。

相關問題