Nota:el código OP funcionará absolutamente. Solo necesitamos guardar el modelo (porque este es solo un campo de modelo, no una relación). Veamos:
>>> p = Post.objects.create(tags=[str(i) for i in range(10000)])
>>> p.tags.append("working!")
>>> p.save()
>>> working_post = Post.objects.get(tags__contains=["working!"])
<Post: Post object>
>>> working_post.tags[-2:]
[u'9999', u'working!']
Profundizando
Django obtiene ArrayField
como lista de python
Todo lo que pudiera hacer lista, puede hacerlo con ArrayField. Ordenación uniforme
Django guarda ArrayField
como lista de python
Esto significa que guarda la estructura y los elementos de la lista de python.