20👍
Django JSONField
is Postgres only.
UPDATE:
There is support for MYSQL via 3rd party library django-mysql
48👍
UPDATE: Django 3.1 now supports JSONField
natively for multiple databases: https://docs.djangoproject.com/en/dev/releases/3.1/#jsonfield-for-all-supported-database-backends
As stated in other answers, Django’s native JSONField (as of 1.9 and 1.10) is for PostgreSQL.
Luckily, MySQL 5.7.8+ comes with a native JSON datatype. You can add it your Django project with the django-mysql package and Django 1.8+
pip install django-mysql
from django.db import models
from django_mysql.models import JSONField
class MyModel(models.Model):
my_json_field = JSONField()
Read more about the django_mysql JSONField here.
- [Django]-What's the best way to handle Django's objects.get?
- [Django]-RuntimeWarning: DateTimeField received a naive datetime
- [Django]-You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application
6👍
# Install jsonfield package
pip install jsonfield
# Define my model
from django.db import models
import jsonfield
class MyModel(models.Model):
the_json = jsonfield.JSONField()
More detail:https://pypi.python.org/pypi/django-jsonfield
- [Django]-Serialize datetime to JSON
- [Django]-Project Name vs Application Name in Django
- [Django]-When we should use "db_index=True" in Django?
2👍
I know this question is about Django 1.9, but JSONField can now be used with all supported database backends with the release of Django 3.1.
- [Django]-How do I go straight to template, in Django's urls.py?
- [Django]-How to redo a migration on django 1.8 after using –fake
- [Django]-How to obtain a QuerySet of all rows, with specific fields for each one of them?
2👍
Try to save data of this model in postgres db on my local machine:
models.py:
from django.db import models
from django import forms
from inputData.models import Input
from django.contrib.postgres.fields import JSONField
class Results(models.Model):
generator = models.OneToOneField(Input, on_delete = models.CASCADE, primary_key = True)
pvalues = JSONField()
views.py
def result(req, res_id):
try:
inp = Input.objects.get(pk = res_id)
path = os.path.join(BASE_DIR, 'uploads\\' + str(res_id) + '\\t.txt')
p_values = parse_res.main(path)
res = Results(generator = inp, pvalues = p_values)
res.save(using = 'results')
except Results.DoesNotExist:
raise Http404
return render(req, 'result.html', {'res': res})
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'results': {
'ENGINE':'django.db.backends.postgresql',
'NAME': 'results',
'PASSWORD': 'password',
'USER': 'user',
'HOST': '127.0.0.1',
'PORT': '8000'
}
}
Model Results (see models.py) uses JSONField, which have about 200 bytes of data
But at the line res.save(… of code views.py browser does response too long.
Whatäs wrong with JSON?
What problems can be on server besides cache?
- [Django]-Is not JSON serializable
- [Django]-Easily rename Django project
- [Django]-How to keep all my django applications in specific folder
1👍
For today I’d recommend using jsonfield2 or waiting for native JSON support for all database backends in Django 3.
- [Django]-ValueError: Cannot add *: instance is on database "default", value is on database "None"
- [Django]-Success_url in UpdateView, based on passed value
- [Django]-How to delete old image when update ImageField?
0👍
Now in MySQL you can use default models.JSONFile
, for more details read here https://docs.djangoproject.com/en/4.2/topics/db/queries/#querying-jsonfield
from django.db import models
class modelName(models.Model):
name = models.CharField(max_length=200)
data = models.JSONField(default=dict, null=True)
def __str__(self):
return self.name
- [Django]-Is Django for the frontend or backend?
- [Django]-Select2 filter values disappear when search returns no results
- [Django]-Django: Detect database backend