Django model data to JSON data in 2 lines



In this article, we are going to learn a handy trick to convert Django model data directly to JSON data. Sometimes, we need to return model data in JSON format; it can also be used in making API or just showing simple data to our frontend in JSON format. JSON is easy to access so it is really handful.

Example

Create a Django project and an app.

In settings.py, add the app name in INSTALLED_APPS.

In urls.py of the Project main directory, add the following lines −

from django.contrib import admin from django.urls import path,include urlpatterns = [    path('admin/', admin.site.urls),    path('',include('modeltojson.urls')) ]

Here we added our app's urls.py.

In the App's urls.py, add the following lines −

from django.urls import path from . import views urlpatterns = [    path('',views.home,name="home") ]

Here we rendered our home view, which is simple.

In models.py, add the following lines −

from django.db import models # Create your models here. class EmployeeData(models.Model):    name=models.CharField(max_length=100)    Salary=models.CharField(max_length=100)    department=models.CharField(max_length=100)

Here, we created our model and add some dummy data for testing and trying.

In admin.py, add the following lines −

from django.contrib import admin from .models import EmployeeData # Register your models here. admin.site.register(EmployeeData)

Here, we simply registered our EmployeeData model in admin page.

In views.py, add the following lines

from django.http import JsonResponse from .models import EmployeeData # Create your views here. def home(request):    data=list(EmployeeData.objects.values())    return JsonResponse(data,safe=False)

Here, we created a list of all key-values using .value() function of our model data and then we rendered it as a JSON response.

Now it is all done, don't forget to add some random data.

Output


[    {       "id": 1,       "name": "Ross Taylor",       "Salary": "1 lakh",       "department": "Technical"    },    {       "id": 2,       "name": "Rohit Sharma",       "Salary": "2 lakh",       "department": "Sales"    },    {       "id": 3,       "name": "Steve Smith",       "Salary": "3 lakh",       "department": "Sales"    } ]
Updated on: 2021-08-25T13:04:38+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements