django-restql: does not work with SerializerMethodField

In case when i use one to many fields i need to pass serializer’s id into different serializer.

def get_a_list(self, obj):
    child = b.objects.all()
    serializer = BListSerializer(instance=child, context={"obj_id": obj.id}, many=True)
    return serializer.data

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 23 (15 by maintainers)

Commits related to this issue

Most upvoted comments

Here is how to use it

class StudentSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
    phones = DynamicSerializerMethodField()
    class Meta:
        model = Student
        fields = ['id', 'name',  'phones']

    def get_phones(self, obj):
        request = self.context.get("request")
        context = {"request": request}
        phones = obj.phone_numbers.all()

        # get child query from parent
        query = self.nested_fields_queries["phones"]
        serializer = PhoneSerializer(phones, query=query, many=True, read_only=True, context=context)
        return serializer.data