django NOT NULL 约束失败:app_subject.created
django NOT NULL constraint failed: 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})
保存表单时出现空约束错误。 views.py at form.save(commit=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>
非常感谢任何帮助...提前致谢
看起来您实际上并没有设置 "created" 字段,而且虽然您设置了 blank=True
,但您还没有设置 null=True
。 blank
只是表示该字段不需要填写表格,而null
实际上允许字段在数据库中None
。这就是为什么您的表单正在验证,但实际上并未保存。
因此,您可以将 null=True
添加到 created
和 created_time
字段。但是,如果您的目的只是让它们存储创建日期,那么将字段设置为类似以下内容会更容易:
created = models.DateTimeField(auto_now_add=True)
auto_now_add
将在创建对象时自动为您设置字段。这应该几乎可以满足您的需求。
我在尝试保存表单时得到空约束
我的模型
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})
保存表单时出现空约束错误。 views.py at form.save(commit=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>
非常感谢任何帮助...提前致谢
看起来您实际上并没有设置 "created" 字段,而且虽然您设置了 blank=True
,但您还没有设置 null=True
。 blank
只是表示该字段不需要填写表格,而null
实际上允许字段在数据库中None
。这就是为什么您的表单正在验证,但实际上并未保存。
因此,您可以将 null=True
添加到 created
和 created_time
字段。但是,如果您的目的只是让它们存储创建日期,那么将字段设置为类似以下内容会更容易:
created = models.DateTimeField(auto_now_add=True)
auto_now_add
将在创建对象时自动为您设置字段。这应该几乎可以满足您的需求。