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"
   }
]
raja
Published on 25-Aug-2021 13:02:32
Advertisements