Django acortar el contenido o longitud de una columna | Programador Web Valencia

Django acortar el contenido o longitud de una columna

1 minuto

Django

Un problema muy común cuando haces una migración, en concreto a la hora de acortar los carácteres máximos o longitud en una columna, es no poder hacerlo porque ya existe contenido y sería un cambio destructivo. Puede ser que incluso visualices por el terminal un error como: psycopg2.errors.StringDataRightTruncation: value too long for type character varying.

¿Solución? Acortar el contenido, no hay otra. Podemos hacerlo usando el ORM de Django.

Primero entramos en la shell de Django.

python3 manage.py shell

Y ahora partimos con la siguiente premisa: el model se denomina Post, la columna content y quiero reducir a 2000 carácteres.

from app.models import Post
from django.db.models.functions import Length
posts_big = Post.objects.annotate(text_len=Length('content')).filter(text_len__gt=2000)
for post in posts_big:
    post.content=post.content[:2000]
    post.save()

Ya puedes realizar la migración. ¡Mucha suerte!

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...