Exemplo n.º 1
0
    def _getRelativeDetailURI(self, modelObj):
        if not modelObj:
            return None

        lookup_field = getattr(modelObj, "pk", None)
        kwargs = {"pk": lookup_field}
        parent_lookups = drf_nested_routing.get_parent_query_lookups_by_class(
            modelObj.__class__)
        if parent_lookups:
            for lookup in parent_lookups:
                lookup_path = lookup.split('__')
                parent_lookup = modelObj
                for part in lookup_path:
                    parent_lookup = getattr(parent_lookup, part)
                parentLookupId = parent_lookup.id if isinstance(
                    parent_lookup, Model) else parent_lookup
                kwargs[drf_nested_routing.PARENT_LOOKUP_NAME_PREFIX +
                       lookup] = parentLookupId

        # Handle unsaved object case
        if lookup_field is None:
            return None

        return reverse(modelObj.__class__.__name__.lower() + '-detail',
                       kwargs=kwargs)
Exemplo n.º 2
0
 def __add_related_fetches_to_querySet(self, queryset):
     parent_lookups = drf_nested_routing.get_parent_query_lookups_by_class(queryset.model)
     related = getattr(self, 'select_related', [])
     lookups = parent_lookups + related
     if lookups:
         queryset = queryset.select_related(*lookups)
     prefetches = getattr(self, 'prefetch_related', [])
     for prefetch in prefetches:
         queryset = queryset.prefetch_related(prefetch)
Exemplo n.º 3
0
 def __add_related_fetches_to_querySet(self, queryset):
     parent_lookups = drf_nested_routing.get_parent_query_lookups_by_class(
         queryset.model)
     related = getattr(self, 'select_related', [])
     lookups = parent_lookups + related
     if lookups:
         queryset = queryset.select_related(*lookups)
     prefetches = getattr(self, 'prefetch_related', [])
     for prefetch in prefetches:
         queryset = queryset.prefetch_related(prefetch)
Exemplo n.º 4
0
    def _getRelativeDetailURI(self, modelObj):
        if not modelObj:
            return None

        lookup_field = getattr(modelObj, "pk", None)
        kwargs = {"pk": lookup_field}
        parent_lookups = drf_nested_routing.get_parent_query_lookups_by_class(modelObj.__class__)
        if parent_lookups:
            for lookup in parent_lookups:
                lookup_path = lookup.split("__")
                parent_lookup = modelObj
                for part in lookup_path:
                    parent_lookup = getattr(parent_lookup, part)
                parentLookupId = parent_lookup.id if isinstance(parent_lookup, Model) else parent_lookup
                kwargs[drf_nested_routing.PARENT_LOOKUP_NAME_PREFIX + lookup] = parentLookupId

        # Handle unsaved object case
        if lookup_field is None:
            return None

        return reverse(modelObj.__class__.__name__.lower() + "-detail", kwargs=kwargs)
Exemplo n.º 5
0
 def _getWildcardedParentLookups(self, modelClass):
     parentLookups = drf_nested_routing.get_parent_query_lookups_by_class(modelClass)
     if not parentLookups:
         return None
     return {parentLookup: "*" for parentLookup in parentLookups}
Exemplo n.º 6
0
 def _getWildcardedParentLookups(self, modelClass):
     parentLookups = drf_nested_routing.get_parent_query_lookups_by_class(
         modelClass)
     if not parentLookups:
         return None
     return {parentLookup: "*" for parentLookup in parentLookups}
Exemplo n.º 7
0
 def _get_parent_lookups_for_select_related(self, queryset):
     parent_lookups = drf_nested_routing.get_parent_query_lookups_by_class(
         queryset.model)
     return parent_lookups