Fix searching on is_multiple composite columns.

This commit is contained in:
Charles Haley 2013-08-24 22:18:49 +02:00
parent a4e0eeb854
commit 6d41bf2f5e

View File

@ -216,8 +216,16 @@ class CompositeField(OneToOneField):
def iter_searchable_values(self, get_metadata, candidates, default_value=None): def iter_searchable_values(self, get_metadata, candidates, default_value=None):
val_map = defaultdict(set) val_map = defaultdict(set)
splitter = self.table.metadata['is_multiple'].get('cache_to_list', None)
for book_id in candidates: for book_id in candidates:
val_map[self.get_value_with_cache(book_id, get_metadata)].add(book_id) vals = self.get_value_with_cache(book_id, get_metadata)
if splitter:
vals = [vv.strip() for vv in vals.split(splitter)]
else:
vals = [vals]
for v in vals:
if v:
val_map[v].add(book_id)
for val, book_ids in val_map.iteritems(): for val, book_ids in val_map.iteritems():
yield val, book_ids yield val, book_ids