2016-12-04 7 views
1

django HaystackElasticSearch backendで使用しています。私のモデルでは、DateTimeFieldがあり、これはrebuilding_indexesの間に問題を引き起こしています。Django Haystackはdatetimeフィールドをインデックスに登録できません

私のモデルは、このようなものです:

class MyModel(models.Model): 
    action = models.DateTimeField() 

私のインデックスクラスは次のようである:私は、問題を作成して、特定のインスタンスの殻に入った

Class MyModelIndex(indexes.SearchIndex, indexes.Indexable): 
    action_time = indexes.DateTimeField(null=True, model_attr="action") 

値は

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 
です

インデックスの作成中に発生するエラーは

です210
if not language_code_re.search(lang_code): 
     TypeError: expected string or buffer 

私は準備フィールドからインデックスからのstrftime返すようにしようとしたが、それはまた

def prepare_action_time(self, obj): 
     return obj.action.strftime('%Y-%m-%dT%H:%M:%SZ') if obj.action else None 

を動作しませんが、私は

def prepare_action_time(self, obj): 
     return unicode(obj.action) if obj.action else None 
のようなDateTime値のUnicode表現を返した場合、それは動作します

またはuse_template=Falseを検索インデックスに使用していません。文書またはオブジェクトのインデックスに登録できます。

しかし、私は得ることができません実際の問題はeです。ヘルプは高く評価されます

答えて

0

再生するには、Djangoのプロジェクトテンプレートを使用して新しいプロジェクトを開始します。私はUSE_L10N = Trueが問題を公開していると考えていますが、それはその原因となる設定の組み合わせかもしれません。

Ivan指定の同じリンクをご覧ください。USE_I10Nの設定を確認してください。 USE_L10N = FalseUSE_L10N = Trueから作成すると、コードが機能します。

詳細はhttps://code.djangoproject.com/ticket/24569を参照してください。

それがすでに設定に設定されているが
+0

はい、USE_L10Nの設定を変更した後に動作します。ありがとう –

+0

はい、現実の世界のシナリオではまだ作業が必要です。 – Ivan

0

あなたの設定にlanguage codeを設定する必要があります。

設定されていない場合、Djangoのget_languageNoneを返し、それを期待しないコードがあります。

詳細はhttps://code.djangoproject.com/ticket/24569を参照してください。

+0

change USE_L10N = True to USE_L10N = False, 
'LANGUAGE_CODE =「エンus''、あなたの質問にDjangoのバージョンを追加することができます@rajpreetsingh –

+0

? – Ivan

+0

djangoのバージョンは1.8 –

関連する問題