2

django-hstore を使用したテスト ケースで、少し奇妙な動作を実行しています。

私はdjango restフレームワークプロジェクトに取り組んでおり、モデルは以下のようになります

モデル

from django_hstore.hstore import DictionaryField

class Config(models.Model):

    data = data = DictionaryField(db_index=True)

そして、Configモデルに基づいてシナリオをテストしようとしていて、このようなことをしています

テスト

class ConfigTestCase(TestCase):

    def setUp(self):
        Config.objects.create(data={'pagination_number': '50'})

    def test_config_data(self):
        # Below code is getting failed
        Config.objects.first().data.get('pagination_number')

Config.objects.first().data を実行すると

「pagination_number」=>「50」を取得しています

{'pagination_number': 50} を期待していました

これは、テストを実行したときにのみ発生します

コマンドシェルで作成操作を手動で実行している場合、すべてが正常に機能し、コードも正常に実行されます

私はdjango-hstore 1.2.1を使用しています

PostgreSQL 9.4.4

私はこれの理由を理解することができません

4

1 に答える 1

0

あなたの問題の解決策を見つけようとして、django-hstoreグループで、少し前にこの増加している議論を見つけました

Andrey Antukhがエラーを再現しました。

================================================== ====================
FAIL: test_properties_hstore (tests.django_hstore_tests.tests.HstoreTest)
-------------------------------------------------- --------------------
Traceback (most recent call last):
  File "/home/niwi/devel/django-hstore/tests/django_hstore_tests/tests.py", line 471, in test_properties_hstore
    self.assertEqual (type (instance.data), HStoreDict) # TEST FAILS HERE
AssertionError: <class 'str'> = <class 'django_hstore.fields.HStoreDict'>

hstoreのドキュメントを読んだ場合:

1.4。制限 PostgreSQL の hstore の実装には型の概念がありません。文字列キーから文字列値へのマッピングを格納します。値は、データベースに格納されている文字列であり、元の型についてです。この制限は、バージョン 1.3.0 以降のスキーマ モードを使用するか、django_hstore のバージョン 1.3.6 以降のシリアル化された辞書フィールドを使用することで克服できます。

django-hstore のバージョンを更新します。これで問題が解決するかもしれません。

于 2015-09-22T18:40:26.953 に答える