Другой подход, который работает, хотя и только PostgreSQL, использует django.contrib.postgres.fields.ArrayField
:
Пример скопирован из docs :
>>> Post.objects.create(name='First post', tags=['thoughts', 'django'])
>>> Post.objects.create(name='Second post', tags=['thoughts'])
>>> Post.objects.create(name='Third post', tags=['tutorial', 'django'])
>>> Post.objects.filter(tags__contains=['thoughts'])
, ]>
>>> Post.objects.filter(tags__contains=['django'])
, ]>
>>> Post.objects.filter(tags__contains=['django', 'thoughts'])
]>
ArrayField
имеет некоторые более мощные функции, такие как overlap и индексные преобразования .