pythonpeeweejsonfield

peewee filter with BinaryJSONField?


class Modex(baseModal):

    sdgdList = BinaryJSONField(verbose_name="sdgdList",null=True,)

sdgdList Data:

[{"x": "1", "cgs": "11.00", "gbxz": "A", "gdmc": "aaa", "zjqk": "0.48", "zzgs": "0.18", "zjqkCss": "red", "gdblockid": "10",}, {"x": "2", "cgs": "10.06", "gbxz": "A", "gdmc": "bbb", "zjqk": "0.32", "zzgs": "0.17", "zjqkCss": "red", "gdblockid": "10", },{"x": "2", "cgs": "10.06", "gbxz": "A", "gdmc": "aaa", "zjqk": "0.32", "zzgs": "0.17", "zjqkCss": "red", "gdblockid": "10", }]

how to filter 'gdmc' == 'aaa' then result:

[{"x": "1", "cgs": "11.00", "gbxz": "A", "gdmc": "aaa", "zjqk": "0.48", "zzgs": "0.18", "zjqkCss": "red", "gdblockid": "10",},{"x": "2", "cgs": "10.06", "gbxz": "A", "gdmc": "aaa", "zjqk": "0.32", "zzgs": "0.17", "zjqkCss": "red", "gdblockid": "10", }]

#did't work! Modex.select().where(Modex.sdgdList['gdmc'] == 'aaa') filter on dict it's work,

{'gdmc':[1,2,'abc','bbb']}

Solution

  • Since your json data is a list of dictionaries, you can do this:

    MyModel.select().where(MyModel.sdgdList.contains([{'gdmc': 'aaa'}]))