Indexing a method return (depending on Internationalization)
Posted
by
Hedde
on Stack Overflow
See other posts from Stack Overflow
or by Hedde
Published on 2012-12-18T17:02:00Z
Indexed on
2012/12/18
17:02 UTC
Read the original article
Hit count: 183
Consider a django model with an IntegerField
with some choices
, e.g.
COLORS = (
(0, _(u"Blue"),
(1, _(u"Red"),
(2, _(u"Yellow"),
)
class Foo(models.Model):
# ...other fields...
color = models.PositiveIntegerField(choices=COLOR, verbose_name=_(u"color"))
My current (haystack) index:
class FooIndex(SearchIndex):
text = CharField(document=True, use_template=True)
color = CharField(model_attr='color')
def prepare_color(self, obj):
return obj.get_color_display()
site.register(Product, ProductIndex)
This obviously only works for keyword "yellow"
, but not for any (available) translations.
Question: What's would be a good way to solve this problem? (indexing method returns based on the active language)
What I have tried:
I created a function that runs a loop over every available language (from settings) appending any translation to a list, evaluating this against the query, pre search. If any colors are matched it converts them backwards into their numeric representation to evaluate against obj.color
, but this feels wrong.
© Stack Overflow or respective owner