D_P
D_P

Reputation: 862

How to add extra field in model serializer?

I am very new to django rest framework. I have two models ModelA and ModelB.

I have a ModelB searilzer to display all the fields in get request.

Because of some reasons ModelA and ModelB are not related by FK but ModelA.objects.get(modelB.field1=modelA.pk) this will return single data.

class ModelASerailzer(serializers.ModelSerializer):

   class Meta:
        model = ModelA
        fields = ['f1','f2']


class ModelBSerailzer(serializers.ModelSerializer):
      # I want to do something like this here
         extra_field = ModelA.objects.get(modelB.field1=modelA.pk).f1 # this will return the data in shell 
                 #and normal django view but I don't know how to implement this in django rest ?
    class Meta:
        model = ModelB
        fields = ['field1','field2', 'extra_field']

I tried like this

class ModelBSerializer(serializers.ModelSerializer):
    extra_field = serializers.SerializerMethodField()

    def get_extra_field(self, member):
        return ModelA.objects.get(pk=member.field).f1
    class Meta:
      model = ModelB
      fields = ['field1','field2', 'extra_field']

With this I got this error UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

ModelA.objects.get(pk=member.field).f1 is a FileField.

Upvotes: 1

Views: 4432

Answers (0)

Related Questions