diff --git a/graphene/contrib/sqlalchemy/options.py b/graphene/contrib/sqlalchemy/options.py index 1d4b2a4f..3040dc3c 100644 --- a/graphene/contrib/sqlalchemy/options.py +++ b/graphene/contrib/sqlalchemy/options.py @@ -10,6 +10,7 @@ class SQLAlchemyOptions(ObjectTypeOptions): def __init__(self, *args, **kwargs): super(SQLAlchemyOptions, self).__init__(*args, **kwargs) self.model = None + self.identifier = None self.valid_attrs += VALID_ATTRS self.only_fields = None self.exclude_fields = [] diff --git a/graphene/contrib/sqlalchemy/types.py b/graphene/contrib/sqlalchemy/types.py index 64b09afd..8af80325 100644 --- a/graphene/contrib/sqlalchemy/types.py +++ b/graphene/contrib/sqlalchemy/types.py @@ -113,8 +113,9 @@ class SQLAlchemyNode(six.with_metaclass( def get_node(cls, id, info=None): try: model = cls._meta.model + identifier = cls._meta.identifier or "id" query = get_query(model, info) - instance = query.filter(model.id == id).one() + instance = query.filter(getattr(model, identifier) == id).one() return cls(instance) except NoResultFound: return None