2013-05-02 64 views
0

views.py“列created_date_time'不能为空” 的Django

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手动地user.But created_date_timesend_date_time输入应由Django生成,因为该功能还没有在我的应用程序中实现,Django给出以下错误“(1048, "Column 'created_date_time' cannot be null")".

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

回答

2

那么,你可以采取一些措施来解决这个问题:

首先,你可以添加属性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领域:

此外,您可能当你创建一个这样的对象手动添加日期。

希望它有帮助。

+0

它适合我,Thnaks – user2086641 2013-05-02 15:46:28

+0

不客气!它有用吗? – 2013-05-02 15:47:21

+3

@PauloBu你不应该使用default = datetime.now(),因为函数是在加载模型时计算的。相反使用默认值= datetime.now – armonge 2013-05-02 15:50:50