1

Suppose I have a jsonfield with data

from django.contrib.postgres.fields import JSONField

class Foo(models.Model):
   json_field = JSONField(default=dict)

json_field = {
  'bar': [1,2,3,4]
}

I'd like to filter data where bar has array length greather than 3

Something like the following, Foo.objects.filter(json_field__bar__length__gt=3)

eugene
  • 39,839
  • 68
  • 255
  • 489

1 Answers1

0

You can try this:

Create one more field in the model i.e json_field_bar_length.

class Foo(models.Model):
    ....
    json_field_bar_length = models.IntegerField(default=0)

And enter the length of json_field['bar'] into it whenever you save the json_field in it and check if the length is greater or not.

Ajay Lingayat
  • 1,465
  • 1
  • 9
  • 25