In the following SEClass has two subclass inheried using manytomany field. whenever use sent data from react it needs to selected that this instance has
class educationHistory(models.Model):
sn = models.CharField(max_length=100, blank=True, null=True)
degree_name = models.CharField(max_length=100, blank=True, null=True)
board_or_university = models.CharField(max_length=100, blank=True, null=True)
class awardsMeritsScholarship(models.Model):
sn = models.CharField(max_length=100, blank=True, null=True)
year = models.CharField(max_length=100, blank=True, null=True)
title = models.CharField(max_length=100, blank=True, null=True)
class SEClass(models.Model):
# Education History
education_history = models.ManyToManyField(educationHistory, blank=True)
# Awards, Merits and Scholarship
awardsMeritsScholarship = models.ManyToManyField(awardsMeritsScholarship, blank=True)
my views.py
class SEClassView(APIView):
def get(self, request):
instances = SEClass.objects.all()
serializer = SEClassSerializer(instances, many=True)
return Response(serializer.data)
def post(self, request, format=None):
data = request.data
if not isinstance(data, list):
return Response(
{"error": "Data should be a list of objects."},
status=status.HTTP_400_BAD_REQUEST
)
save_data = []
for item in data:
education_history_data = item.pop('education_history', [])
awards_merits_scholarship_data = item.pop('awardsMeritsScholarship', [])
# Create SEClass instance
se_class_serializer = SEClassSerializer(data=item)
if not se_class_serializer.is_valid():
return Response(se_class_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
se_class_instance = se_class_serializer.save()
# Save educationHistory instances and link to SEClass
for edu_item in education_history_data:
edu_item['se_class_id'] = se_class_instance.id
edu_serializer = educationHistorySearilizer(data=edu_item)
if edu_serializer.is_valid():
edu_serializer.save()
# Save awardsMeritsScholarship instances and link to SEClass
for awards_item in awards_merits_scholarship_data:
awards_item['se_class_id'] = se_class_instance.id
awards_serializer = awardsMeritsScholarshipSearilizer(data=awards_item)
if awards_serializer.is_valid():
awards_serializer.save()
save_data.append(se_class_serializer.data)
return Response(save_data, status=status.HTTP_201_CREATED)