Cómo crear una babosa única en Django

Estoy tratando de crear una babosa única en Django para poder acceder a una publicación a través de una URL como esta:http://www.example.com/buy-a-new-bike_Boston-MA-02111_2

Los modelos relevantes:

class ZipCode(models.Model):
    zipcode = models.CharField(max_length=5)
    city = models.CharField(max_length=64)
    statecode = models.CharField(max_length=32)

class Need(models.Model):
    title = models.CharField(max_length=50)
    us_zip = models.CharField(max_length=5)
    slug = ?????

    def get_city():
        zip = ZipCode.objects.get(zipcode=self.us_zip)
        city = "%s, %s %s" % (zip.city, zip.statecode, zip.zipcode)
        return city

Un registro ZipCode de muestra:

código postal = "02111"ciudad = "Boston"statecode = "MA"

Una muestra Necesidad de registro:

title = "compra una bicicleta nueva"us_zip = "02111"slug = "buy-a-new-bike_Boston-MA-02111_2" (deseado)

¿Algún consejo sobre cómo crear esta babosa única? Su composición es:

Need.title + "_" + Need.get_city () + "_" + un entero incremental opcional para hacerlo único. Todos los espacios deben reemplazarse con "-".

NOTA: Mi slug deseado arriba asume que el slug "buy-a-new-bike_Boston-MA-02111" ya existe, que es lo que tiene "_2" agregado para hacerlo único.

He intentado django-extensiones, pero parece que solo puede tomar un campo o tupla de campos para construir la babosa única. Necesito pasar la función get_city () así como el conector "_" entre el título y la ciudad. ¿Alguien resolvió esto y está dispuesto a compartir?

¡Gracias!

ACTUALIZAR

Ya estoy usando django-extensiones para su UUIDField, por lo que sería bueno que también pudiera ser utilizado para su AutoSlugField.

Respuestas a la pregunta(7)

Su respuesta a la pregunta