“列'created_date_time'不能为空”Django

时间:2013-05-02 15:32:18

标签: django django-models django-views

views.py

def when(request):

    if request.method == 'POST':

        reportform = ReportForm(data=request.POST)

        if reportform.is_valid():
            log.debug("test:%s",reportform)
            report = reportform.save(commit=False)
            report.user = request.user
            report.save()

models.py是

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    incident_number = models.CharField('Incident Number', max_length=100)
    device_id = models.CharField('Device Id', max_length=100)
    app_uuid = models.CharField('Unique App Id', max_length=100)
    created_date_time = models.DateTimeField('Created')
    manual_date_time = models.DateTimeField('Another time', null=True, blank=True)
    sent_date_time = models.DateTimeField('Sent')

在上面的模型中,,manual_date_time由用户手动输入。但是created_date_timesend_date_time应该由django生成,因为该功能尚未在我的应用中实现,django给出了以下内容错误“(1048, "Column 'created_date_time' cannot be null")".

如何使用表单对其进行硬编码并发送该值以便我可以手动输入日期和时间。想要使用form将硬编码值传递给created_date_time和`send_date_time。如何解决此错误。

1 个答案:

答案 0 :(得分:3)

好吧,你可以做几件事来解决这个问题:

首先,您可以为Django添加属性auto_now=True,以便在创建对象时自动添加now()日期。

created_date_time = models.DateTimeField('Created', auto_now=True)

您还可以向DateTimeField添加默认值,如下所示:

created_date_time = models.DateTimeField('Created', default=datetime.now)

并且您还可以像Null=true一样添加manual_date_time,以便将其添加到具有空值的数据库中。

此外,您可以在创建对象时手动添加日期,如下所示:

    from datetime import datetime
    if reportform.is_valid():
        log.debug("test:%s",reportform)
        report = reportform.save(commit=False)
        report.user = request.user
        report.created_date_time = datetime.now()
        report.save()

sent_date_time字段也一样。

希望它有所帮助。