# DjangoField: How to store semi-structured data with JSONFields in Django databases

One of the cool features that was introduced was the JSONField.JSONField allows for you to store semi-structured data alongside other data fields in PostgreSQL, and SQLite databases .The example in the listing below shows how the JSONField can be added to a model.

from django.db import models

class Patient(models.Model):
name = models.CharField(max_length=256)
data = models.JSONField()

# Create a patient instance
Patient(name='John Doe', data={
'city': 'Some City',
'state': 'Utah',
})

# Filter and delete the patient
Patient.objects.filter(patient='John Doe', data__state='Utah')


The potential to mix structured and semi-structured data is really powerful, however, and there are a number of third-party fields implemented.

I thought that it would be nice if the API had the ability to query and filter the submissions.Implementing logic to provide that type of an interface on top of a CharField or TextField would be difficult.

Here’s before JSONField:

from django.db.models import TextField, Model

class FormSubmission(Model):
...
form_data = TextField()


And after:

from django.db.models import TextField, JSONField, Model

class FormSubmission(Model):
...
form_data = JSONField()


The upgrade was very smooth !Well done to the development team of Django – Development!