diff --git a/sqlalchemy_utils/functions/foreign_keys.py b/sqlalchemy_utils/functions/foreign_keys.py index e1da428..81cd782 100644 --- a/sqlalchemy_utils/functions/foreign_keys.py +++ b/sqlalchemy_utils/functions/foreign_keys.py @@ -357,9 +357,9 @@ def is_indexed_foreign_key(constraint): :param constraint: ForeignKeyConstraint object to check the indexes """ return any( - set(column.name for column in index.columns) + set(constraint.columns.keys()) == - set(constraint.columns) + set(column.name for column in index.columns) for index in constraint.table.indexes ) diff --git a/tests/functions/test_non_indexed_foreign_keys.py b/tests/functions/test_non_indexed_foreign_keys.py index 4f8a30e..3c1791e 100644 --- a/tests/functions/test_non_indexed_foreign_keys.py +++ b/tests/functions/test_non_indexed_foreign_keys.py @@ -1,3 +1,5 @@ +from itertools import chain + import sqlalchemy as sa from sqlalchemy_utils.functions import non_indexed_foreign_keys @@ -43,8 +45,13 @@ class TestFindNonIndexedForeignKeys(TestCase): 'article' in fks ) - column_names = [ - column_name for column_name in fks['article'][0].columns.keys() - ] + column_names = list(chain( + *( + names for names in ( + fk.columns.keys() + for fk in fks['article'] + ) + ) + )) assert 'category_id' in column_names assert 'author_id' not in column_names