Estoy tratando de usar Hashids que funciona cuando ingreso manualmente el número para codificar, pero no funciona si trato de codificar la clave principal de cada fila de la tabla.
modelos.py
from hashids import Hashids from django.db import models class AddToDatabase(models.Model): hashids = Hashids() # hasids.encode(123) works correctly slug = models.CharField(default=hashids.encode(pk), max_length=12)Lo anterior dice que pk no está definido, independientemente de lo que intente importar.
No puede hacer lo que está intentando ahora (ya que pk obtendrá valor solo después de la operación INSERT ). Una opción es
class AddToDatabase(models.Model): hashids = Hashids() slug = models.CharField(max_length=12) def save(self, *args, **kwargs): super(AddToDatabase, self).save(*args, **kwargs) self.slug = self.hashids.encode(self.pk) super(AddToDatabase, self).save(*args, **kwargs)Otra solución es calcular hashid bajo demanda.
class AddToDatabase(models.Model): @property def slug(self): hashids = Hashids() return hashids.encode(self.pk)