Hi,
Can you help me how to disable creating nested objects ?
I have serializers like this:
(Employee has ForeignKey to Team)
<
Okay, first of all, are you sure that your nested object is created? Because DRF was not designed to create nested objects, so this is a very strange behavior (more precisely, this is a work in progress, as stated by its creator, Tom Christie).
Then, in order to have the serializer representation that you want, you must follow some rules:
Create a simple serializer for each model (just like in your first code snippet)
Add the FK relationship on the EmployeeSerializer: (be careful, for this to work, you must have your FK named 'team') team = serializers.RelatedField()
Also, you should remove the depth attribute from your serializer, he is the one that flattens your serialization (or you can just set it to 2). Hope this helps.
UPDATE
View for multiple serializers:
def get_serializer_class(self):
if self.request.method == 'GET':
return ReadEmployeeSerializer
elif self.request.method == 'POST':
return WriteEmployeeSerializer
else:
return DefaultSerializer
class WriteEmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ('id', 'name', 'surname', 'team')
class ReadEmployeeSerializer(serializers.ModelSerializer):
team = TeamSerializer()
class Meta:
model = Employee
fields = ('id', 'name', 'surname', 'team')
A bit redundant, but should do the job.