I am using Django rest framework and I create this class to return all the name of project
class cpuProjectsViewSet(viewsets.ViewSet):
serializer_class = serializers.cpuProjectsSerializer
def list(self, request):
all_rows = connect_database()
name_project = []
all_projects = []
for item_row in all_rows:
name_project.append(item_row['project'])
name_project = list(sorted(set(name_project)))
for i in range(0, len(name_project)):
all_projects.append({'project' : str(name_project[i])})
serializer = serializers.cpuProjectsSerializer(instance=all_projects, many=True)
return Response(serializer.data)
my URL is like that http://127.0.0.1:8000/cpuProjects/ this return all the projects, buy If now I want a particular project, Have I to create a new class?? if I want to use the same URL ... for example
http://127.0.0.1:8000/cpuProjects/ => return all project
http://127.0.0.1:8000/cpuProjects/nameProject => return a particular project.
class cpuProjectsViewSet(viewsets.ViewSet):
serializer_class = serializers.cpuProjectsSerializer
lookup_field = 'project_name'
def retrieve(self, request, project_name=None):
try:
opc = {'name_proj' : project_name }
all_rows = connect_database(opc)
except KeyError:
return Response(status=status.HTTP_404_NOT_FOUND)
except ValueError:
return Response(status=status.HTTP_400_BAD_REQUEST)
serializer = serializers.cpuProjectsSerializer(instance=all_rows, many=True)
return Response(serializer.data)
Is it possible to do in the same class? I try to use retrieve method but the need an ID of the project, no the name right?
thanks in advance!