Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/05/2013, 15:26
sirious
 
Fecha de Ingreso: diciembre-2010
Ubicación: México DF
Mensajes: 27
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Respuesta: Duda con Query's Python DJango - REST Framework

El SP de momento lo único que hace es un SELECT TOP 100 de una tabla X con los cuatro campos que son id, nombre, descripcion, id_problema_padre

Este es el archivo de models.py

Código Python:
Ver original
  1. from django.db import models
  2. from django.db import connection
  3.  
  4. class QueryExecution(models.Model):
  5.     #Initializate the SP fields name
  6.     nombre = models.CharField(max_length=150)
  7.     descripcion = models.TextField()
  8.     id_problema_padre = models.IntegerField()
  9.  
  10.     @staticmethod
  11.     def search(request):
  12.         cur = connection.cursor()
  13.         cur.callproc('todo_neg', request,)
  14.         results = cur.fetchall()
  15.         cur.close()
  16.  
  17.         return [QueryExecution(*row) for row in results]

Este es el views.py

Código Python:
Ver original
  1. from django.http import HttpResponse
  2. from django.views.decorators.csrf import csrf_exempt
  3. from rest_framework.renderers import JSONRenderer
  4. from rest_framework.parsers import JSONParser
  5. from ws.serializers import WSSerializer
  6. from models import QueryExecution
  7.  
  8. class JSONResponce(HttpResponse):
  9.  
  10.     def __init__(self, data, **kwargs):
  11.         content = JSONRenderer().render(data)
  12.         kwargs['content_type'] = 'application/json'
  13.         super(JSONResponce, self).__init__(content, **kwargs)
  14.  
  15. @csrf_exempt
  16. def ws_list(request):
  17.  
  18.     if request.method == 'GET':
  19.         QResult = QueryExecution.objects.all()
  20.         serializer = WSSerializer(QResult, many=True)
  21.         return JSONResponce(serializer.data)
  22.  
  23.     elif request.method == 'POST':
  24.         data = JSONParser().parse(request)
  25.         serializer = WSSerializer(data=data)
  26.         if serializer.is_valid():
  27.             serializer.save()
  28.             return JSONResponce(serializer.data, status=201)
  29.         else:
  30.             return JSONResponce(serializer.data, status=400)
  31.  
  32. @csrf_exempt
  33. def ws_detail(request, pk):
  34.     try:
  35.         ws = QueryExecution.objects.get(pk=pk)
  36.     except QueryExecution.DoesNotExist:
  37.         return HttpResponse(status=404)
  38.  
  39.     if request.method == 'GET':
  40.         serializer = WSSerializer(ws)
  41.         return JSONResponce(serializer.data)
  42.  
  43.     elif request.method == 'PUT':
  44.         data = JSONParser().parse(request)
  45.         serializer = WSSerializer(ws, data=data)
  46.         if serializer.is_valid():
  47.             serializer.save()
  48.             return JSONResponce(serializer.data)
  49.         else:
  50.             return JSONResponce(serializer.errors, status=400)
  51.  
  52.     elif request.method == 'DELETE':
  53.         ws.delete()
  54.         return HttpResponse(status=204)

Este es el serializers.py

Código Python:
Ver original
  1. from rest_framework import serializers
  2. from ws.models import QueryExecution
  3.  
  4. class WSSerializer(serializers.ModelSerializer):
  5.     class Meta:
  6.         model = QueryExecution
  7.         fields = ('id', 'nombre', 'descripcion', 'id_problema_padre')