How to use the graphene-django.graphene_django.filter.filterset.GlobalIDMultipleChoiceFilter function in graphene-django

To help you get started, we’ve selected a few graphene-django examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github graphql-python / graphene / graphene-django / graphene_django / filter / filterset.py View on Github external
ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order_by')


GRAPHENE_FILTER_SET_OVERRIDES = {
    models.AutoField: {
        'filter_class': GlobalIDFilter,
    },
    models.OneToOneField: {
        'filter_class': GlobalIDFilter,
    },
    models.ForeignKey: {
        'filter_class': GlobalIDFilter,
    },
    models.ManyToManyField: {
        'filter_class': GlobalIDMultipleChoiceFilter,
    }
}


class GrapheneFilterSetMetaclass(FilterSetMetaclass):

    def __new__(cls, name, bases, attrs):
        new_class = super(GrapheneFilterSetMetaclass, cls).__new__(cls, name, bases, attrs)
        # Customise the filter_overrides for Graphene
        for k, v in GRAPHENE_FILTER_SET_OVERRIDES.items():
            new_class.filter_overrides.setdefault(k, v)
        return new_class


class GrapheneFilterSetMixin(object):
    order_by_field = ORDER_BY_FIELD
github graphql-python / graphene / graphene-django / graphene_django / filter / filterset.py View on Github external
def filter(self, qs, value):
        gids = [from_global_id(v)[1] for v in value]
        return super(GlobalIDMultipleChoiceFilter, self).filter(qs, gids)
github graphql-python / graphene / graphene-django / graphene_django / filter / filterset.py View on Github external
def filter_for_reverse_field(cls, f, name):
        """Handles retrieving filters for reverse relationships

        We override the default implementation so that we can handle
        Global IDs (the default implementation expects database
        primary keys)
        """
        rel = f.field.rel
        default = {
            'name': name,
            'label': capfirst(rel.related_name)
        }
        if rel.multiple:
            # For to-many relationships
            return GlobalIDMultipleChoiceFilter(**default)
        else:
            # For to-one relationships
            return GlobalIDFilter(**default)