2017-01-20 13 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

ユーザはデータベーステーブルに直接データを入力する必要があります。 エラー:ERROR 1067: 'created'のデフォルト値が無効です。 私はCURRENT_TIMESTAMPを入れようとしました –

+0

もしそれがdbに直接行っているのであれば、djangoは何もできません。 – Sayse

答えて

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) 

を。 Djangoはこれをタイムスタンプとして読み込みます。だから問題はない。この問題を引き起こしたのはmySQLのバージョンでした。 datetimeフィールドにCURRENT_TIMESTAMPデフォルトを使用できませんでした。

0

私は同じ問題が、この試す持っていた:それは、だから私は、MySQLのテーブルを変更した...そして、タイムスタンプに日時フィールドを変更し、私

関連する問題