De acordo com os documentos do Django JSONField, ele explica que os
data
estrutura corresponde ao formato nativo do python, com uma abordagem ligeiramente diferente ao consultar. Se você conhece a estrutura do JSON, também pode filtrar as chaves como se fossem campos relacionados:
object.filter(data__animal='cat')
object.filter(data__name='tom')
Por acesso à matriz:
object.filter(data__0__animal='cat')
Seu exemplo de conteúdo está quase correto, mas seus dados estão em uma lista e requerem:
object.filter(data__contains=[{'animal': 'cat'}])