Skip to content

Commit f6fea91

Browse files
committed
Add implementation for aliased_fields meta option
1 parent ff8d109 commit f6fea91

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

graphene_sqlalchemy/types.py

+13-6
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
from .utils import get_query, is_mapped_class, is_mapped_instance
2020

2121

22-
def construct_fields(model, registry, only_fields, exclude_fields):
22+
def construct_fields(model, registry, only_fields, exclude_fields, aliased_fields):
2323
inspected_model = sqlalchemyinspect(model)
24+
if aliased_fields is None:
25+
aliased_fields = {}
2426

2527
fields = OrderedDict()
2628

@@ -33,7 +35,8 @@ def construct_fields(model, registry, only_fields, exclude_fields):
3335
# in there. Or when we exclude this field in exclude_fields
3436
continue
3537
converted_column = convert_sqlalchemy_column(column, registry)
36-
fields[name] = converted_column
38+
alias = aliased_fields.get(name, name)
39+
fields[alias] = converted_column
3740

3841
for name, composite in inspected_model.composites.items():
3942
is_not_in_only = only_fields and name not in only_fields
@@ -44,7 +47,8 @@ def construct_fields(model, registry, only_fields, exclude_fields):
4447
# in there. Or when we exclude this field in exclude_fields
4548
continue
4649
converted_composite = convert_sqlalchemy_composite(composite, registry)
47-
fields[name] = converted_composite
50+
alias = aliased_fields.get(name, name)
51+
fields[alias] = converted_composite
4852

4953
for hybrid_item in inspected_model.all_orm_descriptors:
5054

@@ -61,7 +65,8 @@ def construct_fields(model, registry, only_fields, exclude_fields):
6165
continue
6266

6367
converted_hybrid_property = convert_sqlalchemy_hybrid_method(hybrid_item)
64-
fields[name] = converted_hybrid_property
68+
alias = aliased_fields.get(name, name)
69+
fields[alias] = converted_hybrid_property
6570

6671
# Get all the columns for the relationships on the model
6772
for relationship in inspected_model.relationships:
@@ -74,7 +79,8 @@ def construct_fields(model, registry, only_fields, exclude_fields):
7479
continue
7580
converted_relationship = convert_sqlalchemy_relationship(relationship, registry)
7681
name = relationship.key
77-
fields[name] = converted_relationship
82+
alias = aliased_fields.get(name, name)
83+
fields[alias] = converted_relationship
7884

7985
return fields
8086

@@ -95,6 +101,7 @@ def __init_subclass_with_meta__(
95101
skip_registry=False,
96102
only_fields=(),
97103
exclude_fields=(),
104+
aliased_fields=None,
98105
connection=None,
99106
connection_class=None,
100107
use_connection=None,
@@ -116,7 +123,7 @@ def __init_subclass_with_meta__(
116123
).format(cls.__name__, registry)
117124

118125
sqla_fields = yank_fields_from_attrs(
119-
construct_fields(model, registry, only_fields, exclude_fields), _as=Field
126+
construct_fields(model, registry, only_fields, exclude_fields, aliased_fields), _as=Field
120127
)
121128

122129
if use_connection is None and interfaces:

0 commit comments

Comments
 (0)