2017-01-20 70 views
0

我有一個項目,客戶端必須登錄到數據庫並手動在那裏輸入數據。是的,直接訪問,不要問爲什麼!Django和直接數據庫操作

我想要的是當我將更改應用到表格時,創建和修改的字段將被自動打印當前的日期和時間。

我正在使用MySQL。

於是,我建立我的模型,所以..

class Atlantis(models.Model): 
    description = models.TextField('description', max_length=200 , default = None,null=True,blank=True) 
    amount = models.IntegerField('Amount', default=0) 
    quantity = models.IntegerField('Quantity', default=0) 
    inserted = models.BooleanField(default=False) 
    update_chk = models.BooleanField(default=False) 
    created = models.DateTimeField(auto_now=True,auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 

def save(self, *args, **kwargs): 
    ''' On save, update timestamps ''' 
    if not self.id: 
     self.created = timezone.now() 
    self.modified = timezone.now() 
    return super(Atlantis, self).save(*args, **kwargs) 

當我的數據添加到數據庫中創建的領域沒有被自動完成,當前時間戳。

我試圖改變數據庫中的表並將創建字段的默認設置更改爲CURRENT_TIMESTAMP,但出現錯誤。

所以我問,我可以做什麼?

+0

當你說添加數據你的意思是直接做沒有ORM?錯誤是什麼? – Sayse

+0

用戶必須將數據直接輸入到數據庫表中。 錯誤是:錯誤1067:「已創建」的默認值無效。 我試圖把CURRENT_TIMESTAMP –

+0

如果他們直接把它做到db那麼django絕對沒有辦法做到。 – Sayse

回答

0

所以我改變了MySQL表...並改變了日期時間字段的時間戳。 Django將它讀作時間戳。所以沒有問題。這是導致問題的mySQL版本。無法在datetime字段中使用CURRENT_TIMESTAMP默認值。

0

我有同樣的問題試試這個:

def save(self, force_insert=False, force_update=False, using=None, update_fields=None): 
    self._meta.local_fields = [f for f in self._meta.local_fields if f.name not in ('your_field')] 
    super(Atlantis, self).save(force_insert, force_update, using, update_fields) 

它幫助我