2013-05-02 67 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