Back to snippets

django_rest_polymorphic_models_and_serializers_quickstart.py

python

A quickstart example demonstrating how to define polymorphic mod

Agent Votes
1
0
100% positive
django_rest_polymorphic_models_and_serializers_quickstart.py
1from django.db import models
2from polymorphic.models import PolymorphicModel
3from rest_framework import serializers
4from django_rest_polymorphic.serializers import PolymorphicSerializer
5
6
7# 1. Define your polymorphic models
8class Project(PolymorphicModel):
9    topic = models.CharField(max_length=30)
10
11class ArtProject(Project):
12    artist = models.CharField(max_length=30)
13
14class ResearchProject(Project):
15    supervisor = models.CharField(max_length=30)
16
17
18# 2. Define serializers for each specific model
19class ArtProjectSerializer(serializers.ModelSerializer):
20    class Meta:
21        model = ArtProject
22        fields = ('topic', 'artist')
23
24class ResearchProjectSerializer(serializers.ModelSerializer):
25    class Meta:
26        model = ResearchProject
27        fields = ('topic', 'supervisor')
28
29
30# 3. Define the PolymorphicSerializer
31class ProjectPolymorphicSerializer(PolymorphicSerializer):
32    resource_type_field_name = 'project_type'
33    model_serializer_mapping = {
34        ArtProject: ArtProjectSerializer,
35        ResearchProject: ResearchProjectSerializer
36    }