2017-04-25 9 views
0

私は、thingsというJSONフィールドを含むテーブルを持つMySQLデータベースを持っています。Django MySQL Query Jsonフィールド

私は

を介してデータベースから引き出されているオブジェクトのコレクションを持っているJSONはこの

もの= {::「フィル」、「値2」「ジル」「VALUE1」}のようになります。

my_things = Name_table.objects.values 

ここで、my_thingsコレクションをJSONフィールドの1つでフィルタリングしたいと思います。私はこの

my_thingsを試し= my_things.filter(things__contains = { '値': 'フィル'})空のコレクションを返した

。 Iも

my_things = my_things.filter(物事= { '値': 'フィル'})試した

my_things = my_things.filter(things__exact =を{'value': 'phil'})

Django 1.10とMySQL 5.7を使用しています 考えられますか?

答えて

1

フィールドにJSONをどのくらい正確に保存しているかによって異なります。 django-jsonfieldを使用する場合は、thingsは空白のない文字列、引用符で囲まれた文字列:'{"value1":"phil","value2":"jill"}'となります。 docs経由その後

、:私はあなたの提案を試してみましたが、それはまだ、空のコレクションを返します

>>> tmp_str = '{"value1":"phil","value2":"jill"}' 
>>> '"value1":"phil"' in tmp_str 
True 
+0

ので

my_things = my_things.filter(things__contains='"value1":"phil"') 

は、あなたのフィルタクエリセットを返す必要があります。データはdjang-jsonfieldを使用して保存されていませんでした。これはpythonの組み込みjsonライブラリを使用して非Web Pythonアプリケーションから保存されました。 –

+0

本当に奇妙なことは、my_thingsにはフィルタを適用する前にいくつかの項目が含まれており、その後は0項目が含まれています。 –

+0

あなたの提案はうまくいきました。 –