model
JavaScript
x
9
1
class Enrollee(TimeStampedModel):
2
id = models.UUIDField(primary_key=True, default=uuid.uuid4, verbose_name=_('id'))
3
first_name = models.CharField(max_length=60, verbose_name=_('first name'))
4
dependents = models.ManyToManyField(to=Dependant, blank=True, verbose_name=_('dependents'))
5
6
class Dependant(TimeStampedModel):
7
id = models.UUIDField(primary_key=True, default=uuid.uuid4, verbose_name=_('id'))
8
first_name = models.CharField(max_length=60, verbose_name=_('first name'))
9
view
JavaScript
1
5
1
class EnrolleeViewSet(viewsets.ModelViewSet):
2
queryset = models.Enrollee.objects.all()
3
serializer_class = serializers.EnrolleeSerializer
4
filter_class = filters.EnrolleeFilter
5
serializers
JavaScript
1
15
15
1
class EnrolleeSerializer(DynamicFieldsMixin, DynamicFieldsModelSerializer):
2
dependents = DependantSerializer(many=True, required=False)
3
4
5
def create(self, validated_data):
6
dependant_data = validated_data.pop('dependents')
7
enrollee = models.Enrollee.objects.create(**validated_data)
8
for dependant in dependant_data:
9
models.Dependant.objects.create(**dependant)
10
return enrollee
11
12
class Meta:
13
model = models.Enrollee
14
fields = '__all__'
15
error:
JavaScript
1
5
1
{
2
"first_name": "hmo1",
3
"dependents": [],
4
}
5
It means dependents is not inserting
Here I am trying to send nested data for my dependents(ManyToManyField) But, Getting above error while inserting data.
Is there any way we can achive this ?
JavaScript
1
9
1
{
2
"first_name":"soubhagya",
3
"dependents" : [
4
{
5
"first_name":"soubhagya"
6
}
7
]
8
}
9
Above is the data i am sending using post method.
please have a look
Advertisement
Answer
JavaScript
1
9
1
def create(self, validated_data):
2
dependant_data = validated_data.pop('dependents')
3
enrollee = models.Enrollee.objects.create(**validated_data)
4
for dependant in dependant_data:
5
obj = models.Dependant.objects.create(**dependant)
6
enrollee.dependents.add(obj)
7
enrollee.save()
8
return enrollee
9