Съгласно документите на Django JSONField, това обяснява, че data
структурата съответства на родния формат на python, с малко по-различен подход при запитване.
Ако знаете структурата на JSON, можете също да филтрирате по ключове, сякаш са свързани полета:
object.filter(data__animal='cat')
object.filter(data__name='tom')
Чрез достъп до масив:
object.filter(data__0__animal='cat')
Вашият пример за съдържание е почти правилен, но вашите данни са в списък и изисква:
object.filter(data__contains=[{'animal': 'cat'}])