1

视图.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()

模型.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中是由用户手动输入的。但是应该由 django 生成created_date_timesend_date_time因为该功能尚未在我的应用程序中实现,django 给出以下错误“(1048, "Column 'created_date_time' cannot be null")".

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

4

1 回答 1

4

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

首先,您可以auto_now=True为 Django 添加属性以自动添加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

希望能帮助到你。

于 2013-05-02T15:38:42.107 回答