Mysql
 sql >> база данни >  >> RDS >> Mysql

Полета за времеви отпечатъци в django

Всъщност имаше много добра и информативна статия за това. Тук:http://ianrolfe.livejournal.com/36017.html

Решението на страницата е леко остаряло, така че направих следното:

from django.db import models
from datetime import datetime
from time import strftime

class UnixTimestampField(models.DateTimeField):
    """UnixTimestampField: creates a DateTimeField that is represented on the
    database as a TIMESTAMP field rather than the usual DATETIME field.
    """
    def __init__(self, null=False, blank=False, **kwargs):
        super(UnixTimestampField, self).__init__(**kwargs)
        # default for TIMESTAMP is NOT NULL unlike most fields, so we have to
        # cheat a little:
        self.blank, self.isnull = blank, null
        self.null = True # To prevent the framework from shoving in "not null".

    def db_type(self, connection):
        typ=['TIMESTAMP']
        # See above!
        if self.isnull:
            typ += ['NULL']
        if self.auto_created:
            typ += ['default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP']
        return ' '.join(typ)

    def to_python(self, value):
        if isinstance(value, int):
            return datetime.fromtimestamp(value)
        else:
            return models.DateTimeField.to_python(self, value)

    def get_db_prep_value(self, value, connection, prepared=False):
        if value==None:
            return None
        # Use '%Y%m%d%H%M%S' for MySQL < 4.1
        return strftime('%Y-%m-%d %H:%M:%S',value.timetuple())

За да го използвате, всичко, което трябва да направите, е:timestamp = UnixTimestampField(auto_created=True)

В MySQL колоната трябва да изглежда като:'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Единственият недостатък на това е, че работи само в MySQL бази данни. Но можете лесно да го промените за други.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате главни букви в малки букви в MySQL

  2. Филтрирайте DataGrid за име с TextBox динамично

  3. Как да направя анкета за база данни в реално време в MySQL/PHP?

  4. Актуализирайте и изберете в една заявка

  5. c3p0 maxIdleTime е същото като wait_timeout на mysql?