Reputation: 7119
I have these 2 serializers:
class BasicSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('lengthy', 'touple', 'of', \
'fields', 'like', '10', 'of', 'them')
class AdvandedSerializer(BasicSerializer):
additional_field = serializers.SerializerMethodField()
def get_additional_field(self, obj):
return('not important')
class Meta:
model = MyModel
fields = ('lengthy', 'touple', 'of', \
'fields', 'like', '10', 'of', 'them', 'additional_field')
This is obviously rather ugly code. I would like to get and extend the fields
touple from super()
, however I have no idea how.
Upvotes: 67
Views: 29779
Reputation: 2019
You can do:
class BasicSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('lengthy', 'touple', 'of', 'fields', 'like', '10', 'of', 'them')
class AdvandedSerializer(BasicSerializer):
additional_field = serializers.SerializerMethodField()
def get_additional_field(self, obj):
return('not important')
class Meta(BasicSerializer.Meta):
fields = BasicSerializer.Meta.fields + ('additional_field',)
Upvotes: 139
Reputation: 11685
we can do like
class AdvandedSerializer(BasicSerializer):
# ... some code
class Meta:
model = MyModel
fields = BasicSerializer.Meta.fields + ('additional_field',)
Upvotes: 26