Django Unix timestamp (POSIX type) field
Project description
Provide a custom field that is stored as float (UTC POSIX timestamp) and used as datetime instance.
Requirements
Database that supports Float type is compatible
Python2.7, 3.4 with Django 1.8, 1.9
Note: Since the 1.8 is LTS version, I choose to support from 1.8. SubClassing will be removed in 2.0 , so I handle from_db_value() only. If you could help version <= 1.7, welcome~~ :D
Install
pip install django-unixtimestampfield
Usage
Used in model as:
from django.db import models
from unixtimestampfield.fields import UnixTimeStampField
class ModelA(models.Model):
created = UnixTimeStampField(auto_now_add=True)
modified = UnixTimeStampField(auto_now=True)
str_ini = UnixTimeStampField(default='0.0')
float_ini = UnixTimeStampField(default=0.0)
int_ini = UnixTimeStampField(default=0.0)
dt_ini = UnixTimeStampField(default=timezone.now)
num_field = UnixTimeStampField(use_numeric=True, default=0.0)
Behavior exmpale:
>>> m = modelA.objects.create()
>>> m.created
datetime.datetime(2015, 9, 2, 10, 41, 41, 937257, tzinfo=<UTC>)
>>> m.int_ini
datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>)
>>> m.int_ini = 3
>>> m.save()
>>> m.int_ini
datetime.datetime(1970, 1, 1, 0, 3, tzinfo=<UTC>)
>>> m.num_field
0.0
Field Options
auto_now: Set as True to refresh while saving, just like DatetimeField
auto_now_add: set as True to add while creating, just like DatetimeField
round_to: percision (num) of round(value, num), default: 6
use_float: DEPRECATED in v0.3, see use_numeric
use_numeric: set as True that instance attribute would be numeric, default as False
Django settings
If USE_TZ is set to False, there is no tzinfo while accessing attribute
Example:
# In settings.py
USE_TZ = False
>>> m = modelA.objects.create()
>>> m.created
datetime.datetime(2015, 9, 2, 10, 41, 41, 937257)
Tricky Sub-middleware
Due to values stored as float, it’s hard for recognizing and leads to these tricky middleware.
Here are 3 mode to show data:
usf_default: Show data by default, according to use_numeric option of field. This is also default setting.
usf_datetime: Always convert to datetime object
usf_timestamp: Always convert to timestamp
Use USF_FORMAT to indicate display police in settings.py. Following comes to several demos.
Assume ModelB as:
class ModelB(models.Model):
num_field = UnixTimeStampField(use_numeric=True, default=0.0)
dt_field = UnixTimeStampField(default=0.0)
Then getting field value what you want:
>>> m = ModelB()
# with USF_FORMAT='usf_default' in settings.py
>>> m.num_field, m.dt_field
(0.0, datetime.datetime(1970, 1, 1, 0, 0))
# with USF_FORMAT='usf_datetime' in settings.py
>>> m.num_field, m.dt_field
(datetime.datetime(1970, 1, 1, 0, 0), datetime.datetime(1970, 1, 1, 0, 0))
# with USF_FORMAT='usf_timestamp' in settings.py
>>> m.num_field, m.dt_field
(0.0, 0.0)
Version
V0.3.5.1 – Inter compatibility and fix timezone problem
V0.3.5 – Parse time format: YYYY-mm-dd HH:MM:SS[.FFFFFF]
V0.3.4 – Bugs fixed.
V0.3.3 – Add sub-middleware and template tags
v0.3 – Add ordinal time field and change field options use_float to use_numeric!!!
v0.2 – Handle formfield and add options while init
v0.1 – Added UnixTimeStampField
LICENSE
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-unixtimestampfield-0.3.5.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 891a957a41bee850967e30414069511cebb1f6a4eccec284dc40f44aa225e6a5 |
|
MD5 | 011abd262d4ac357bf0c6cd2bf0932f4 |
|
BLAKE2b-256 | 10a7967aa372f94a55928ca27cfe84dc4221abc28cbb83a91c14bcce1dc8ae64 |