2014-02-20 35 views
0

Django的新手在這裏。提交表單時,即使我提交數據獲取「可能不空」的錯誤。 DateTime字段

我有一個DateTimeField字段不能是空的一種形式,但儘管給人一種時間和日期,我得到一個錯誤。

錯誤消息:

IntegrityError at /app/new_action/ 
app_action.event_time may not be NULL 

樣品輸入:

02/08/2014 15:00 

models.py

class Action(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.CharField(max_length=200) 
    location = models.CharField(max_length=200) 
    event_time = models.DateTimeField() 
    created_by = models.ForeignKey(UserProfile) 
    last_modified = models.DateTimeField('Last Modified') 

    def __unicode__(self): 
     return self.name 

forms.py

class ActionForm(forms.ModelForm): 
    event_time = forms.DateTimeField(input_formats=['%m/%d/%Y %H:%M']) 
    class Meta: 
     model = Action 
     fields = ('name','description','location',) 

views.py

@login_required 
def new_action(request): 
context = RequestContext(request) 

if request.method == 'POST': 
    form = ActionForm(request.POST) 

    if form.is_valid(): 
     form.save(commit=True) 
     #note = form.save(commit=True) 
     #note.created_by = profile.id 
     #note.save() 
     return index(request) 
    else: 
     print form.errors 
else: 
    form = ActionForm() 

額外注:如果可能的話,我想保持這種輸入格式。爲了測試的緣故,我將字段回DateTimeField字段,但如果我能得到這個固定的,我會回去使用this,產生這種輸入格式。

+0

嘗試在Meta類中添加「EVENT_TIME」到字段列表(也將其轉換爲一個列表,因爲你有一個元組) – Alvaro

+0

這樣做。正如我所提到的,我是一個Django newb,那麼這個改變究竟做了什麼? – dakisbac

+0

使用Meta.fields,您僅暴露列表中的字段。因此,您確切知道表單旨在處理哪些字段。在你的情況下,列表中缺少字段'event_time'。 –

回答

0

正如阿爾瓦羅提到,試着改變你的forms.py到

class ActionForm(forms.ModelForm): 
    event_time = forms.DateTimeField(input_formats=['%m/%d/%Y %H:%M']) 
    class Meta: 
     model = Action 
     fields = ['name','description','location', 'event_time']