首页 > 解决方案 > Django 数据库问题

问题描述

我想从我的数据库中获取信息,但是,我只能获取所有数据。我知道这是我使用objects.all() 的原因。我得到了(患者姓名、身份证、地址代码和所有这些)。我想知道我应该怎么做才能获得数据库中的所有名称,而不是 Json 形式的所有数据。谢谢你。

视图.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)


模型.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


标签: pythondjangodatabasesqlite

解决方案


也许这可以完成这项工作。

ModelName.objects.values('列名')


推荐阅读