fix: use prop key instead of column name, for master view model key
every once in a while those can differ, we need prop key when they do
This commit is contained in:
parent
c33f211633
commit
8ba44e10bd
|
@ -2707,6 +2707,9 @@ class MasterView(View):
|
||||||
represents a Wutta-based SQLAlchemy model, the return value
|
represents a Wutta-based SQLAlchemy model, the return value
|
||||||
for this method is: ``('uuid',)``
|
for this method is: ``('uuid',)``
|
||||||
|
|
||||||
|
Any class mapped via SQLAlchemy should be supported
|
||||||
|
automatically, the keys are determined from class inspection.
|
||||||
|
|
||||||
But there is no "sane" default for other scenarios, in which
|
But there is no "sane" default for other scenarios, in which
|
||||||
case subclass should define :attr:`model_key`. If the model
|
case subclass should define :attr:`model_key`. If the model
|
||||||
key cannot be determined, raises ``AttributeError``.
|
key cannot be determined, raises ``AttributeError``.
|
||||||
|
@ -2721,8 +2724,12 @@ class MasterView(View):
|
||||||
|
|
||||||
model_class = cls.get_model_class()
|
model_class = cls.get_model_class()
|
||||||
if model_class:
|
if model_class:
|
||||||
mapper = sa.inspect(model_class)
|
# nb. we want the primary key but must avoid column names
|
||||||
return tuple([column.key for column in mapper.primary_key])
|
# in case mapped class uses different prop keys
|
||||||
|
inspector = sa.inspect(model_class)
|
||||||
|
keys = [col.name for col in inspector.primary_key]
|
||||||
|
return tuple([prop.key for prop in inspector.column_attrs
|
||||||
|
if [col.name for col in prop.columns] == keys])
|
||||||
|
|
||||||
raise AttributeError(f"you must define model_key for view class: {cls}")
|
raise AttributeError(f"you must define model_key for view class: {cls}")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue