python / intermediate
Snippet
Querying PostgreSQL ArrayField List Elements in Django ORM
Django's `ArrayField` allows storing list data in PostgreSQL columns. You can perform specific array operations in queries using index lookups (e.g., `tags__0`) and length lookups (`tags__len__gte`) directly via the ORM syntax.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
from django.db import modelsfrom django.contrib.postgres.fields import ArrayFieldclass ArticlePost(models.Model):tags = ArrayField(models.CharField(max_length=50), default=list)def find_articles_by_primary_tag(tag_name: str):matched_primary = ArticlePost.objects.filter(tags__0=tag_name)multi_tagged = ArticlePost.objects.filter(tags__len__gte=2)return matched_primary.intersection(multi_tagged)
django
Breakdown
1
tags = ArrayField(models.CharField(max_length=50), default=list)
Defines a database field that stores a dynamic list of strings.
2
matched_primary = ArticlePost.objects.filter(tags__0=tag_name)
Filters records where the first element (index 0) of the array matches tag_name.
3
multi_tagged = ArticlePost.objects.filter(tags__len__gte=2)
Filters records where the array contains two or more total elements.
4
return matched_primary.intersection(multi_tagged)
Returns the intersection QuerySet combining both array filter criteria.