yep, here we go
class TimeSerie(models.Model):
type = models.CharField(max_length=64)
value = JSONField()
date = models.DateTimeField(auto_now_add=True)
# This is how the value is stored
value = json.loads(run(self.cmd, display=False).stdout)
TimeSerie.objects.create(type=
self.name, value=value)
# And this is how it looks like using ValuesQuerySet vs accessing the
object value
>>> TimeSerie.objects.filter(pk=4769).values('value')
[{'value': '{"used":5358516,"cached":3191544,"free":2729444,"real-used":2044016,"shared":0,"real-free":6043944,"total":8087960,"buffers":122956}'}]
>>> TimeSerie.objects.filter(pk=4769)[0].values
{u'used': 5358516, u'cached': 3191544, u'free': 2729444, u'real-used':
2044016, u'shared': 0, u'real-free': 6043944, u'total': 8087960,
u'buffers': 122956}
One is an string and the other is a dict.
And here using raw sql
=# select value from monitor_timeserie where id=4769;
value
--------------------------------------------------------------------------------------------------------------------------------------
{"used":5358516,"cached":3191544,"free":2729444,"real-used":2044016,"shared":0,"real-free":6043944,"total":8087960,"buffers":122956}
(1 row)
it's a json field acctually
=# \d+ monitor_timeserie;
Table
"public.monitor_timeserie"
Column | Type |
Modifiers | Storage | Stats target |
Description
--------+--------------------------+----------------------------------------------------------------+----------+--------------+-------------
id | integer | not null default
nextval('monitor_timeserie_id_seq'::regclass) | plain |
|
type | character varying(64) | not null
| extended | |
value | json | not null
| extended | |
date | timestamp with time zone | not null
| plain | |
Indexes:
"monitor_timeserie_pkey" PRIMARY KEY, btree (id)
"monitor_timeserie_date_4395efb9" btree (date, type)
Has OIDs: no
--
Marc