Временные поля в джанго

У меня есть база данных MySQL, сейчас я генерирую все поля datetime как models.DateTimeField . Есть ли способ получить timestamp ? Я хочу, чтобы иметь возможность autoupdate при создании и обновлении и т. Д.

В документации по django этого нет?

3 Solutions collect form web for “Временные поля в джанго”

На самом деле была очень хорошая и содержательная статья. Здесь: 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. Но вы можете легко изменить его для других.

Пакет pip django-unixdatetimefield предоставляет поле UnixDateTimeField, которое вы можете использовать для этого из коробки ( https://pypi.python.org/pypi/django-unixdatetimefield/ ).

Пример модели:

 from django_unixdatetimefield import UnixDateTimeField class MyModel(models.Model): created_at = UnixDateTimeField() 

Запрос ORM Python:

 >>> m = MyModel() >>> m.created_at = datetime.datetime(2015, 2, 21, 19, 38, 32, 209148) >>> m.save() 

База данных:

 sqlite> select created_at from mymodel; 1426967129 

Вот интересующий исходный код – https://github.com/Niklas9/django-unixdatetimefield .

Отказ от ответственности: я являюсь автором этого пакета pip.

Для автоматического обновления при вставке и обновлении используйте это:

 created = DateTimeField(auto_now_add=True, editable=False, null=False, blank=False) last_modified = DateTimeField(auto_now=True, editable=False, null=False, blank=False) 

DateTimeField должен хранить UTC (проверьте настройки вашего БД, я знаю из Postgres, что это так). Вы можете использовать l10n в шаблонах и формате через:

 {{ object.created|date:'SHORT_DATETIME_FORMAT' }} 

Секунды с эпохи Unix:

 {{ object.created|date:'U' }} 

См. https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#date.

  • Как создать отношение многих ко многим в SQLAlchemy (python, flask) для модели User to itself
  • Обновление Python mySQL, работая, но не обновляя таблицу
  • MySQLdb для Python не может найти libmysqlclient.dylib с Homebrewed MySQL
  • Как фильтровать (или заменять) символы Unicode, которые занимают более 3 байтов в UTF-8?
  • Почему целые числа в кортежей строк базы данных имеют суффикс «L»?
  • Преобразовать sql-результат в список python
  • Эффективное определение того, открыт ли бизнес или нет на основе часов магазина
  • Проблемы с установкой mysql-python (на mac os x lion)
  • Python - лучший язык программирования в мире.