J'utilise django Haystack
avec ElasticSearch backend
. Dans mon modèle, j'ai un DateTimeField
qui crée des problèmes lors de la reconstruction des index.Django Haystack ne peut pas indexer le champ datetime
Mon modèle est comme ceci:
class MyModel(models.Model):
action = models.DateTimeField()
ma classe Index est comme:
Class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
action_time = indexes.DateTimeField(null=True, model_attr="action")
La valeur je suis arrivé dans la coquille de l'instance particulière qui crée problème est
obj = MyModel.objects.get(id=1)
obj.action
Out[56]: datetime.datetime(2016, 6, 21, 14, 6, 37, 430691, tzinfo=<UTC>) # result or value of action field
Et l'erreur que je reçois lors de la création d'index est
if not language_code_re.search(lang_code):
TypeError: expected string or buffer
J'ai essayé de revenir strftime d'index de préparer le terrain, mais il ne fonctionne pas non plus
def prepare_action_time(self, obj):
return obj.action.strftime('%Y-%m-%dT%H:%M:%SZ') if obj.action else None
mais il fonctionne si je retourne la représentation unicode de la valeur datetime comme
def prepare_action_time(self, obj):
return unicode(obj.action) if obj.action else None
ou sans utiliser use_template=False
dans mon index de recherche Je suis en mesure d'indexer les documents ou les objets
Mais je suis incapable d'obtenir wher Le problème réel est. Aide sera appréciée
Oui, cela fonctionne après avoir changé les paramètres USE_L10N. Merci –
Oui, bien que vous ayez encore à travailler dans un scénario réel. – Ivan