def _get_related_fields_by_name(self, model): related_fields = {} if hasattr(model, '_meta'): field_names = get_all_field_names(model) for field_name in field_names: field = get_field_by_name(model, field_name) if (not field.auto_created or field.concrete) and field.rel: related_fields[field.name] = field return related_fields
def _get_type_fieldnames(self, obj=None, field_type=None): """ Returns the fieldnames on model of Django field type """ if not obj: obj = self.Meta.model fieldnames = self._get_model_fields() matched_fieldnames = [] for fieldname in fieldnames: field = get_field_by_name(obj, fieldname) if isinstance(field, field_type): matched_fieldnames.append(fieldname) return matched_fieldnames
def response_data_from_bundles(self, request, *args, **kwargs): """ Prepare the response data dict for each object in bundles """ bundles = kwargs['bundles'] for bundle in bundles: obj = bundle['obj'] obj_data = {} for fieldname in self._get_model_fields(obj): field = get_field_by_name(obj, fieldname) dehydrated_value = self._to_basic_type(obj, field) if dehydrated_value is not None: obj_data[fieldname] = dehydrated_value # Update the bundle in place bundle['response_data'] = obj_data return (request, args, kwargs)