示例#1
0
    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
示例#2
0
 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
示例#3
0
    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)