Opened 3 months ago

Last modified 3 months ago

#29429 new Bug

Make len lookup for ArrayField use the array_length function

Reported by: creative3000 Owned by:
Component: contrib.postgres Version: 2.0
Severity: Normal Keywords: db orm ArrayField postgres
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by creative3000)

When you filter by len like in documentation example:

  Post.objects.filter(tags__len=1)

But if you try to annotate something an error pops up example:

 Post.objects.all().annotate(tag_len=F('tags__len'))

It really seems that it should work by default, but instead I needed to use something like this

 Post.objects.all().annotate(tag_len=Func(F('tags'), 1, function='array_length'))

Change History (4)

comment:1 Changed 3 months ago by creative3000

Description: modified (diff)

comment:2 Changed 3 months ago by creative3000

Description: modified (diff)
Owner: changed from nobody to creative3000
Status: newassigned

comment:3 Changed 3 months ago by Tim Graham

Component: Database layer (models, ORM)contrib.postgres
Easy pickings: unset
Summary: Postgres ArrayField doesn't work properly.Make len lookup for ArrayField use the array_length function
Triage Stage: UnreviewedAccepted

I haven't dug into this. It might be fine. Accepting for further investigation.

comment:4 Changed 3 months ago by creative3000

Owner: creative3000 deleted
Status: assignednew
Note: See TracTickets for help on using tickets.
Back to Top