2016-02-12 59 views
0

即時得到當我試圖保存表單Django的NOT NULL約束失敗:app_subject.created

我的模型

class Subject(models.Model): 
    name=models.CharField(max_length=128, blank=True) 
    created=models.DateTimeField('Created Date',blank=True) 


    def __str__(self): 
     return self.name 

class Book(models.Model): 
    book_subject=models.ForeignKey(Subject,on_delete=models.CASCADE) 
    book_name=models.CharField(max_length=128) 
    url=models.URLField() 
    votes=models.IntegerField(default=0) 
    created_time=models.DateTimeField('Created Date',blank=True) 
    comments=models.CharField(max_length=400) 

    def __str__(self): 
     return self.book_name 

我的形式

class SubjectForm(forms.ModelForm): 
    class Meta: 
     model = Subject 
     fields=('name',) 

class BookForm(forms.ModelForm): 
    class Meta: 
     model = Book 
     fields=('book_title',) 

views.py空約束

def add_subject(request): 
    if request.method == 'POST': 
     form = SubjectForm(request.POST) 
     if form.is_valid(): 
      form.save(commit=True) 
      return index(request) 
     else: 
      print form.errors 
    else: 
     form = SubjectForm() 
    return render(request,'add_subj.html', {'form': form}) 

Im g在保存表單時設置空約束錯誤。錯誤是造成在views.py在form.save(提交= True) ...一切都很直接..但困惑.....有什麼問題...

當我打印形成我得到以下答案

<tr><th><label for="id_name">Name:</label></th><td><input id="id_name" maxlength="128" name="name" type="text" value="civil" /></td></tr> 

任何幫助深表感謝......提前

回答

3

它看起來像你實際上沒有設置「創造」領域的感謝,雖然你已經設置blank=True,你還沒有設置null=Trueblank只是表示該字段不需要填寫表單,而null實際上允許數據庫中的字段爲None。這就是爲什麼你的表單正在驗證,但實際上並沒有保存。

因此,您可以將null=True添加到您的createdcreated_time字段中。但是,如果你的目的只是讓他們存儲創建的日期,它會更容易只是使字段是這樣的:

created = models.DateTimeField(auto_now_add=True) 

auto_now_add將自動設置字段,用於對對象的創建。這應該幾乎做你需要的。

+0

謝謝.........它解決了我的問題........乾杯 – spidy

+0

你能否幫我解決我的另一個問題.... http://stackoverflow.com/questions/ 35357279/Django的難度在-顯示最DATACOUNT – spidy

相關問題