Wie erstelle ich einen einzigartigen Slug in Django

Ich versuche, in Django einen einzigartigen Slug zu erstellen, damit ich über eine URL wie diese auf einen Beitrag zugreifen kann:http: //www.example.com/buy-a-new-bike_Boston-MA-02111_

Die relevanten Modelle:

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

Ein ZipCode-Beispieleintrag:

zipcode = "02111"city = "Boston"statecode = "MA"

A sample Need record:

title = "kaufe ein neues Fahrrad"us_zip = "02111"slug = "kaufe-ein-neues-Fahrrad_Boston-MA-02111_2" (gewünscht)

Irgendwelche Tipps, wie man diese einzigartige Schnecke erstellt? Seine Zusammensetzung ist:

Need.title + "_" + Need.get_city () + "_" + eine optionale inkrementierende Ganzzahl, um sie eindeutig zu machen. Alle Leerzeichen sollten durch "-" ersetzt werden.

HINWEIS: Mein gewünschter Slug oben geht davon aus, dass der Slug "buy-a-new-bike_Boston-MA-02111" bereits vorhanden ist. Deshalb wurde das "_2" an ihn angehängt, um ihn einzigartig zu machen.

Ich habe Django-Erweiterungen ausprobiert, aber es scheint, dass es nur ein Feld oder ein Tupel von Feldern braucht, um den einzigartigen Slug zu konstruieren. Ich muss die Funktion get_city () sowie den "_" -Anschluss zwischen dem Titel und der Stadt übergeben. Hat jemand dieses Problem gelöst und ist bereit zu teilen?

Vielen Dank

AKTUALISIERE

Ich verwende bereits Django-Erweiterungen für sein UUIDField, also wäre es schön, wenn es auch für sein AutoSlugField verwendbar wäre!

Antworten auf die Frage(14)

Ihre Antwort auf die Frage