# serializers.py from rest_framework import serializers from test_app.models import Product class ProductSerializer(serializers.Serializer): product_id = serializers.IntegerField() product = serializers.SerializerMethodField('get_product_name') def get_product_name(self, obj): if obj.get("product_id"): obj_product = Product.objects.filter(id=obj.get("product_id")).first() if obj_product: return obj_product.name return None # API views.py from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from test_app.serializers import ProductsSerializer @api_view(['GET']) def list_products(request): response_data = {} response_data["data"] = ProductSerializer( [{"program": i} for i in [1, 2, 3]], many=True ).data return Response(response_data, status=status.HTTP_200_OK)
Suppose we have searlizer called 'CollegeStudentsSerializer' which should return all students, branches details of a logged-in user college
# serializers.py from rest_framework import serializers from test_app.models import Student, Branch class StudentSerializer(serializers.ModelSerializer): class Meta: model = Student fields = ['id', 'first_name', 'last_name', 'branch'] class BranchSerializer(serializers.ModelSerializer): class Meta: model = Branch fields = ['id', 'name', 'code'] class CollegeDetailsSerializer(serializers.Serializer): students = serializers.SerializerMethodField('get_students') branches = serializers.SerializerMethodField('get_branches') def __init__(self, *args, **kwargs): context = kwargs.pop("context") self.college_id = context.get('college_id') super(CollegeDetailsSerializer, self).__init__(*args, **kwargs) def get_students(self, obj): return StudentSerializer( Student.objects.filter(college_id=self.college_id), many=True ).data def get_branches(self, obj): return BranchSerializer( Branch.objects.filter(college_id=self.college_id), many=True ).data # API views.py from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from test_app.serializers import CollegeDetailsSerializer @api_view(['GET']) def students_list(request): response_data = {"data": []} if request.user and request.user.college_id: response_data["data"] = CollegeDetailsSerializer( context={"college_id": request.user.college_id}, many=True ).data return Response(response_data, status=status.HTTP_200_OK)
Micropyramid is a software development and cloud consulting partner for enterprise businesses across the world. We work on python, Django, Salesforce, Angular, Reactjs, React Native, MySQL, PostgreSQL, Docker, Linux, Ansible, git, amazon web services. We are Amazon and salesforce consulting partner with 5 years of cloud architect experience. We develop e-commerce, retail, banking, machine learning, CMS, CRM web and mobile applications.
Django-CRM :Customer relationship management based on Django
Django-blog-it : django blog with complete customization and ready to use with one click installer Edit
Django-webpacker : A django compressor tool
Django-MFA : Multi Factor Authentication
Docker-box : Web Interface to manage full blown docker containers and images
More...