Following this answer, I was able to filter foreign keys choices to select:
But when I mark spm as autocomplete_field:autocomplete_fields = ['spm'], the spm field becomes from select field to autocomplete search field:

But the foreign key choices are not restricted as configured in "formfield_for_foreignkey" any more.
Even when I am attaching the widget inside formfield_for_foreignkey method, spm autocomplete options are getting restricted:
@admin.register(CustomModel)
class CustomModelAdmin(admin.ModelAdmin):
    #autocomplete_fields = ['spm']
    search_fields = ['name']
    def get_form(self, request, obj=None, **kwargs):
        request.current_object = obj
        return super(CustomModelAdmin, self).get_form(request, obj, **kwargs)
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'spm':
            instance = request.current_object
            if instance.brand and instance.memory_size:
                    filtered_qs=StandardProductWithMemorySize.objects.filter(
                        product__brand=instance.brand,
                        memory_size=instance.memory_size
                    )
                    kwargs['queryset'] = filtered_qs
                    db = kwargs.get('using')
                    kwargs['widget'] = AutocompleteSelect(db_field.remote_field, self.admin_site)
        return super(
            CustomModelAdmin, self
        ).formfield_for_foreignkey(db_field, request, **kwargs)

