# django-jsonfield /

Filename Size Date modified Message
jsonfield
128 B
656 B
66 B
2.7 KB
717 B
1.4 KB

# django-jsonfield

I had a serious need for a JSON field for django. There were a couple out there, but none packaged up nicely on bitbucket/github that were usable with pip install -e.

So I took the code from David Cramer's blog, and packaged it up.

## Usage

To use, just install the package, and then use the field:

from django.db import models
import jsonfield

class MyModel(models.Model):
the_json = jsonfield.JSONField()


Now, it will validate the JSON on entry, and store it as a string in the database. When you instantiate/fetch the object, it will be turned back into a python list/dict/string.

### Notes

If no default is provided, and null=True is not passed in to the field constructor, then a default of {} will be used.

There are also a couple of other bits and bobs:

## Extras

### jsonify templatetag

This allows you to convert a python data structure into JSON within a template:

{% load jsonify %}

<script>
var foo = {{ bar|jsonify }};
</script>


## History

### 0.8.10

Allow {{ variable|jsonify }} to work with querysets.

### 0.8.8

Prevent circular import problem with django 1.3.1 and gargoyle.

### 0.8.7

Better handle null=True and blank=True: it should make sense what they do now.

### 0.8.5

Allow for '{}' and '[]', and make them not appear to be None.

### 0.8.4

Ensure the version number file is installed with the package.

### 0.8.3

Store the version number in one place only, now.

### 0.8.2

Oops. Packaging error prevented install from pypi. Added README.rst to manifest.

### 0.8.1

Converting to string does nothing, as serializing a model instance with a JSONField would have a string version of that field, instead of it embedded inline. (Back to pre 0.8 behaviour).

Added better querying support: (field__contains={'key':'value','key2':'value2'} works.)

Removed JSONTableWidget from package.

### 0.8

(Many thanks to IanLewis for these features)

Supports django 1.2

Supports callable and json serializable objects as default

Implemented get_db_prep_value()

Add tests and test runner.

Removed JSONTableWidget from README.

### 0.7.1

Don't fail when trying to install before django is installed.

### 0.7

First time I tagged releases.

## Todo

Convert date/time objects nicely to/from ISO strings (YYYY-mm-dd HH:MM:SS TZNAME). This is actually a bit tricky, as we don't know if we are expecting a date/time object. We may parse objects as we go, but there could be some performance issues with this.