私は他の誰かが書いて設定したdjango rest-apiフレームワークに潜っています。私は良い解決策が見つからないという問題に遭遇しました。djangoはディクショナリフィールドに基づいてクエリセットをフィルタリングできますか?
"YAMLField"タイプのフィールドを含むモデルがあります。このフィールドメンバーを取得しようとしている間、それはOrderedDictに変換されます(この変換がどのように、どこで起こっているかはわかりません...)。
今、このモデルのクエリセットがあります。私は単純な属性に基づいてクエリーセットをフィルタリングする方法を理解していますが、この辞書に基づいてどのようにフィルタリングできますか?
例えば、(mymodelというインスタンスである)、このクエリセット内の各エントリは含まれています
MyModel.myDictionary == {'firstKey': 'firstVal', 'secondKey':'secondVal}
今、私はこのクエリセットからすべてのエントリを取得したい:
myDictionary = {'firstKey': 'Something'}
意味、私の辞書をフィルタリングするには、キーのサブセットのみを含めることができます。
私はクエリーセットを反復し、各エントリについて辞書を反復するために、それを行うための解決方法も簡単な方法も見つかりませんでした。 これはあまりにも多くのオーバーヘッドのように感じます...
を確認したり、辞書のキーは、あなたはリストとしてすべてのキーを取得するにはmy_dictionary.keys()を使用し、それを使用することができ、モデルの主キーですMyModel.objects.filter(id__in = my_dictionary.keys())のようなクエリーセットフィールドのルックアップ。 PEP8スタイルの変数やフィールドには、CamelCaseではなく、下線を付けて名前を付けることを忘れないでください。 – Nerlin
あなたの答えをありがとう。辞書キーはプライマリモデルキーではありません。辞書はモデルキーですが、辞書の内容に基づいてフィルタリングしたいと思います。 私は、これがYAMLFieldであるという事実を使用して終了し、その辞書からフィルタリングするすべての値を連結した後、そのフィールドで正規表現検索を行いました。 – orizis