use subfieldbase instead of a custom descriptor.  adjust string output to work with primary_key=True