Back to snippets
django_rest_polymorphic_models_and_serializers_quickstart.py
pythonA 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 }