2016-02-12 60 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

相关问题