【问题标题】:django NOT NULL constraint failed: app_subject.createddjango NOT NULL 约束失败:app_subject.created
【发布时间】:2016-02-12 17:16:22
【问题描述】:

我在尝试保存表单时遇到空约束

我的模型

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})

保存表单时出现空约束错误。 form.save(commit=True) 处的views.py 中导致错误......一切都很简单......但是令人困惑......可能是什么问题......

当我打印表单时,我得到以下答案

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

非常感谢任何帮助...在此先感谢

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    看起来您实际上并没有设置“创建”字段,虽然您设置了blank=True,但您还没有设置null=Trueblank只是表示该字段不需要填写表格,而null实际上允许字段在数据库中为None。这就是为什么您的表单正在验证,但并未实际保存的原因。

    因此,您可以将 null=True 添加到您的 createdcreated_time 字段中。但是,如果您的目的只是让他们存储创建日期,则将字段设置为如下所示会更容易:

    created = models.DateTimeField(auto_now_add=True)
    

    auto_now_add 会在创建对象时自动为您设置字段。这应该几乎可以满足您的需求。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2020-03-28
    • 2020-12-19
    • 2016-04-02
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    相关资源
    最近更新 更多