Lsqaure
Lsqaure

Reputation: 11

Django database issue

I would like to get information from my database, however, i am only able to get all the data. I understood that it is bcs I used objects.all(). I got (patient name, nric, address code and all of them). I am wondering what should I do in order to get, say, all the names in my database and not all the data in Json form. Thank you.

view.py

from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import PatientDetail
from .serializer import PatientSerializer

# Create your views here.


@api_view(['Get', 'POST'])
# @csrf_exempt
def patient_list(request):
    if request.method == 'GET':

        patientdetails = PatientDetail.objects.all()
        # serialization
        serializer = PatientSerializer(patientdetails, many=True)
        # return Json
        return Response(serializer.data)

    elif request.method == 'POST':
        #data = JSONParser().parse(request)
        serializer = PatientSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


@api_view(['Get', 'PUT','DELETE'])
@csrf_exempt
def patient_detail(request,patientNRIC):
    try:
        patientdetails = PatientDetail.objects.get(patientNRIC = patientNRIC)

    except PatientDetail.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == "GET":

        # serialization, getting one data only
        serializer = PatientSerializer(patientdetails)
        # return Json
        return JsonResponse(serializer.data)

    elif request.method == "PUT":
        data = JSONParser().parse(request)
        serializer = PatientSerializer(patientdetails, data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data)
        return JsonResponse(serializer.errors, status=400)

    elif request.method == 'DELETE':
        patientdetails.delete()
        return HttpResponse(status=204)


model.py

from django.db import models
from django.db import models




class PatientDetail(models.Model):

    patientName = models.CharField(max_length=100)
    patientNRIC = models.CharField(max_length=100, primary_key=True)
    patientAddress = models.CharField(max_length=100)
    patientAllergies = models.CharField(max_length=100)
    patientMedicationName = models.CharField(max_length=100)
    dosage = models.CharField(max_length=100)
    sideEffects = models.CharField(max_length=100)

    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.patientName


Upvotes: 0

Views: 67

Answers (1)

M.S_A
M.S_A

Reputation: 26

Maybe this could do the job.

ModelName.objects.values('Colum_name')

Upvotes: 1

Related Questions